]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of git://git.savannah.gnu.org/lilypond.git
authorTrevor Daniels <t.daniels@treda.co.uk>
Sun, 31 Jul 2011 06:57:47 +0000 (07:57 +0100)
committerTrevor Daniels <t.daniels@treda.co.uk>
Sun, 31 Jul 2011 06:57:47 +0000 (07:57 +0100)
834 files changed:
Documentation/changes.tely
Documentation/common-macros.itexi
Documentation/contributor.texi
Documentation/contributor/administration.itexi
Documentation/contributor/build-notes.itexi
Documentation/contributor/doc-translation-list.itexi
Documentation/contributor/doc-work.itexi
Documentation/contributor/feta-font.itexi [new file with mode: 0644]
Documentation/contributor/introduction.itexi
Documentation/contributor/issues.itexi
Documentation/contributor/lsr-work.itexi
Documentation/contributor/programming-work.itexi
Documentation/contributor/quick-start.itexi
Documentation/contributor/regressions.itexi
Documentation/contributor/release-work.itexi
Documentation/contributor/source-code.itexi
Documentation/contributor/website-work.itexi
Documentation/cs/translations.itexi
Documentation/cs/web/download.itexi
Documentation/css/lilypond-website.css
Documentation/de/learning.tely
Documentation/de/translations.itexi
Documentation/de/usage/external.itely
Documentation/de/web.texi
Documentation/de/web/download.itexi
Documentation/de/web/introduction.itexi
Documentation/de/web/manuals.itexi
Documentation/es/GNUmakefile
Documentation/es/essay/engraving.itely
Documentation/es/essay/literature.itely
Documentation/es/extending/programming-interface.itely
Documentation/es/extending/scheme-tutorial.itely
Documentation/es/included/generating-output.itexi
Documentation/es/learning/common-notation.itely
Documentation/es/learning/fundamental.itely
Documentation/es/learning/preface.itely
Documentation/es/learning/templates.itely
Documentation/es/learning/tutorial.itely
Documentation/es/learning/tweaks.itely
Documentation/es/notation/ancient.itely
Documentation/es/notation/changing-defaults.itely
Documentation/es/notation/cheatsheet.itely
Documentation/es/notation/chords.itely
Documentation/es/notation/contemporary.itely
Documentation/es/notation/editorial.itely
Documentation/es/notation/expressive.itely
Documentation/es/notation/fretted-strings.itely
Documentation/es/notation/input.itely
Documentation/es/notation/keyboards.itely
Documentation/es/notation/notation-appendices.itely
Documentation/es/notation/notation.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/spacing.itely
Documentation/es/notation/specialist.itely
Documentation/es/notation/staff.itely
Documentation/es/notation/text.itely
Documentation/es/notation/unfretted-strings.itely
Documentation/es/notation/vocal.itely
Documentation/es/notation/wind.itely
Documentation/es/notation/world.itely
Documentation/es/search-box.ihtml
Documentation/es/texidocs/accordion-discant-symbols.texidoc
Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc
Documentation/es/texidocs/adding-ambitus-per-voice.texidoc
Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc
Documentation/es/texidocs/adding-an-extra-staff.texidoc
Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc
Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc
Documentation/es/texidocs/adding-drum-parts.texidoc
Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc
Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc
Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc
Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc
Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc
Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc
Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc
Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc
Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc
Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc
Documentation/es/texidocs/aligning-bar-numbers.texidoc
Documentation/es/texidocs/aligning-marks-with-various-notation-objects.texidoc
Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc
Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc
Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc
Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc
Documentation/es/texidocs/ancient-fonts.texidoc
Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc
Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc
Documentation/es/texidocs/ancient-time-signatures.texidoc
Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc
Documentation/es/texidocs/arabic-improvisation.texidoc
Documentation/es/texidocs/asymmetric-slurs.texidoc
Documentation/es/texidocs/automatic-beam-subdivisions.texidoc
Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc
Documentation/es/texidocs/beam-endings-in-score-context.texidoc
Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc
Documentation/es/texidocs/beams-across-line-breaks.texidoc
Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc
Documentation/es/texidocs/broken-crescendo-hairpin.texidoc
Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc
Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc
Documentation/es/texidocs/changing--flageolet-mark-size.texidoc
Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc
Documentation/es/texidocs/changing-beam-knee-gap.texidoc
Documentation/es/texidocs/changing-chord-separator.texidoc
Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc
Documentation/es/texidocs/changing-fret-orientations.texidoc
Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc
Documentation/es/texidocs/changing-partcombine-texts.texidoc
Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc
Documentation/es/texidocs/changing-the-ambitus-gap.texidoc
Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc
Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc
Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc
Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc
Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc
Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc
Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc
Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc
Documentation/es/texidocs/changing-the-time-signature-without-affecting-the-beaming.texidoc
Documentation/es/texidocs/changing-the-tuplet-number.texidoc
Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc
Documentation/es/texidocs/chant-or-psalms-notation.texidoc
Documentation/es/texidocs/chord-glissando-in-tablature.texidoc
Documentation/es/texidocs/chord-name-exceptions.texidoc
Documentation/es/texidocs/chord-name-major7.texidoc
Documentation/es/texidocs/chordchanges-for-fretboards.texidoc
Documentation/es/texidocs/clip-systems.texidoc
Documentation/es/texidocs/clusters.texidoc
Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc
Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc
Documentation/es/texidocs/compound-time-signatures.texidoc
Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc
Documentation/es/texidocs/contemporary-glissando.texidoc
Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc
Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc
Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc
Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc
Documentation/es/texidocs/creating-a-delayed-turn.texidoc
Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc
Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc
Documentation/es/texidocs/creating-blank-staves.texidoc
Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc
Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc
Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc
Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc
Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc
Documentation/es/texidocs/creating-slurs-across-voices.texidoc
Documentation/es/texidocs/creating-text-spanners.texidoc
Documentation/es/texidocs/cross-staff-tremolos.texidoc
Documentation/es/texidocs/custodes.texidoc
Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc
Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc
Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc
Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc
Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc
Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc
Documentation/es/texidocs/displaying-complex-chords.texidoc
Documentation/es/texidocs/displaying-grob-ancestry.texidoc
Documentation/es/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc
Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc
Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc
Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc
Documentation/es/texidocs/engravers-one-by-one.texidoc
Documentation/es/texidocs/engraving-ties-manually.texidoc
Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc
Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc
Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc
Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc
Documentation/es/texidocs/flamenco-notation.texidoc
Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc
Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc
Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc
Documentation/es/texidocs/fretboards-alternate-tables.texidoc
Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc
Documentation/es/texidocs/generating-random-notes.texidoc
Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc
Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc
Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc
Documentation/es/texidocs/grouping-beats.texidoc
Documentation/es/texidocs/guitar-slides.texidoc
Documentation/es/texidocs/guitar-strum-rhythms.texidoc
Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc
Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc
Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc
Documentation/es/texidocs/hymn-template.texidoc
Documentation/es/texidocs/incipit.texidoc
Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc
Documentation/es/texidocs/inserting-a-caesura.texidoc
Documentation/es/texidocs/isolated-percent-repeats.texidoc
Documentation/es/texidocs/jazz-combo-template.texidoc
Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc
Documentation/es/texidocs/letter-tablature-formatting.texidoc
Documentation/es/texidocs/line-arrows.texidoc
Documentation/es/texidocs/lyrics-alignment.texidoc
Documentation/es/texidocs/makam-example.texidoc
Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc
Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc
Documentation/es/texidocs/measure-counter.texidoc
Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc
Documentation/es/texidocs/modern-tab-text-clef.texidoc
Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc
Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc
Documentation/es/texidocs/moving-slur-positions-vertically.texidoc
Documentation/es/texidocs/multi-measure-rest-markup.texidoc
Documentation/es/texidocs/nesting-staves.texidoc
Documentation/es/texidocs/non-default-tuplet-numbers.texidoc
Documentation/es/texidocs/non-traditional-key-signatures.texidoc
Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc
Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc
Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc
Documentation/es/texidocs/ottava-text.texidoc
Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc
Documentation/es/texidocs/percent-repeat-count-visibility.texidoc
Documentation/es/texidocs/percent-repeat-counter.texidoc
Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc
Documentation/es/texidocs/piano-template-simple.texidoc
Documentation/es/texidocs/piano-template-with-centered-dynamics.texidoc
Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc
Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc
Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc
Documentation/es/texidocs/polyphony-in-tablature.texidoc
Documentation/es/texidocs/positioning-arpeggios.texidoc
Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc
Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc
Documentation/es/texidocs/positioning-multi-measure-rests.texidoc
Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc
Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc
Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc
Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc
Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc
Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc
Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc
Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc
Documentation/es/texidocs/printing-marks-on-every-staff.texidoc
Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc
Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc
Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc
Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc
Documentation/es/texidocs/quoting-another-voice.texidoc
Documentation/es/texidocs/recorder-fingering-chart.texidoc
Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc
Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc
Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc
Documentation/es/texidocs/removing-the-first-empty-line.texidoc
Documentation/es/texidocs/rest-styles.texidoc
Documentation/es/texidocs/reverting-default-beam-endings.texidoc
Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc
Documentation/es/texidocs/setting-system-separators.texidoc
Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc
Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc
Documentation/es/texidocs/shortening-volta-brackets.texidoc
Documentation/es/texidocs/showing-chords-at-changes.texidoc
Documentation/es/texidocs/simple-lead-sheet.texidoc
Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc
Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc
Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc
Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc
Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc
Documentation/es/texidocs/slides-in-tablature.texidoc
Documentation/es/texidocs/snap-pizzicato-bartok-pizzicato.texidoc
Documentation/es/texidocs/stand-alone-two-column-markup.texidoc
Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc
Documentation/es/texidocs/string-quartet-template-simple.texidoc
Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc
Documentation/es/texidocs/subdividing-beams.texidoc
Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc
Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc
Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc
Documentation/es/texidocs/tweaking-clef-properties.texidoc
Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc
Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc
Documentation/es/texidocs/using-alternative-flag-styles.texidoc
Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc
Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc
Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc
Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc
Documentation/es/texidocs/using-the-whiteout-property.texidoc
Documentation/es/texidocs/using-ties-with-arpeggios.texidoc
Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc
Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc
Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc
Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc
Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc
Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc
Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc
Documentation/es/texidocs/vocal-ensemble-template.texidoc
Documentation/es/texidocs/volta-below-chords.texidoc
Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc
Documentation/es/texidocs/woodwind-diagrams-listing.texidoc
Documentation/es/translations.itexi
Documentation/es/usage/external.itely
Documentation/es/usage/lilypond-book.itely
Documentation/es/usage/running.itely
Documentation/es/usage/suggestions.itely
Documentation/es/usage/updating.itely
Documentation/es/web/download.itexi
Documentation/es/web/introduction.itexi
Documentation/es/web/manuals.itexi
Documentation/es/web/news-front.itexi
Documentation/es/web/news.itexi
Documentation/extending/programming-interface.itely
Documentation/fr/translations.itexi
Documentation/hu/GNUmakefile
Documentation/hu/translations.itexi
Documentation/hu/usage/lilypond-book.itely [new file with mode: 0644]
Documentation/hu/web/download.itexi
Documentation/hu/web/manuals.itexi
Documentation/included/authors.itexi
Documentation/included/compile.itexi
Documentation/included/helpus.itexi
Documentation/it/learning.tely
Documentation/it/learning/common-notation.itely
Documentation/it/learning/fundamental.itely
Documentation/it/learning/preface.itely
Documentation/it/learning/templates.itely [new file with mode: 0644]
Documentation/it/learning/tutorial.itely
Documentation/it/macros.itexi
Documentation/it/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc [new file with mode: 0644]
Documentation/it/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc [new file with mode: 0644]
Documentation/it/texidocs/anglican-psalm-template.texidoc [new file with mode: 0644]
Documentation/it/texidocs/hymn-template.texidoc [new file with mode: 0644]
Documentation/it/texidocs/jazz-combo-template.texidoc [new file with mode: 0644]
Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc [new file with mode: 0644]
Documentation/it/texidocs/piano-template-simple.texidoc [new file with mode: 0644]
Documentation/it/texidocs/piano-template-with-centered-dynamics.texidoc [new file with mode: 0644]
Documentation/it/texidocs/piano-template-with-centered-lyrics.texidoc [new file with mode: 0644]
Documentation/it/texidocs/piano-template-with-melody-and-lyrics.texidoc [new file with mode: 0644]
Documentation/it/texidocs/satb-choir-template---four-staves.texidoc [new file with mode: 0644]
Documentation/it/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc [new file with mode: 0644]
Documentation/it/texidocs/single-staff-template-with-notes-and-chords.texidoc [new file with mode: 0644]
Documentation/it/texidocs/single-staff-template-with-notes-and-lyrics.texidoc [new file with mode: 0644]
Documentation/it/texidocs/single-staff-template-with-only-notes.texidoc [new file with mode: 0644]
Documentation/it/texidocs/string-quartet-template-simple.texidoc [new file with mode: 0644]
Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc [new file with mode: 0644]
Documentation/it/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc [new file with mode: 0644]
Documentation/it/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc [new file with mode: 0644]
Documentation/it/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc [new file with mode: 0644]
Documentation/it/texidocs/vocal-ensemble-template.texidoc [new file with mode: 0644]
Documentation/it/translations.itexi
Documentation/it/usage/external.itely [new file with mode: 0644]
Documentation/it/usage/lilypond-book.itely [new file with mode: 0644]
Documentation/it/usage/running.itely
Documentation/it/usage/suggestions.itely
Documentation/it/usage/updating.itely
Documentation/ja/translations.itexi
Documentation/learning/tweaks.itely
Documentation/nl/included/generating-output.itexi
Documentation/nl/learning/common-notation.itely
Documentation/nl/learning/fundamental.itely
Documentation/nl/learning/tutorial.itely
Documentation/nl/macros.itexi
Documentation/nl/search-box.ihtml
Documentation/nl/translations.itexi
Documentation/nl/web.texi
Documentation/nl/web/download.itexi
Documentation/nl/web/introduction.itexi
Documentation/nl/web/manuals.itexi
Documentation/notation/keyboards.itely
Documentation/notation/pitches.itely
Documentation/notation/simultaneous.itely
Documentation/notation/staff.itely
Documentation/pictures/Learning_Macos_welcome.png
Documentation/snippets/accordion-discant-symbols.ly
Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly
Documentation/snippets/adding-ambitus-per-voice.ly
Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly
Documentation/snippets/adding-an-extra-staff.ly
Documentation/snippets/adding-bar-lines-to-chordnames-context.ly
Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly
Documentation/snippets/adding-drum-parts.ly
Documentation/snippets/adding-fingerings-to-tablatures.ly
Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly
Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly
Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly
Documentation/snippets/adding-the-current-date-to-a-score.ly
Documentation/snippets/adding-volta-brackets-to-additional-staves.ly
Documentation/snippets/additional-voices-to-avoid-collisions.ly
Documentation/snippets/adjusting-grace-note-spacing.ly
Documentation/snippets/adjusting-lyrics-vertical-spacing.ly
Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly
Documentation/snippets/aligning-and-centering-instrument-names.ly
Documentation/snippets/aligning-bar-numbers.ly
Documentation/snippets/aligning-marks-with-various-notation-objects.ly
Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly
Documentation/snippets/altering-the-length-of-beamed-stems.ly
Documentation/snippets/alternative-breve-note.ly
Documentation/snippets/ambitus-with-multiple-voices.ly
Documentation/snippets/analysis-brackets-above-the-staff.ly
Documentation/snippets/ancient-fonts.ly
Documentation/snippets/ancient-headword.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly
Documentation/snippets/ancient-time-signatures.ly
Documentation/snippets/anglican-psalm-template.ly
Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly
Documentation/snippets/arabic-improvisation.ly
Documentation/snippets/asymmetric-slurs.ly
Documentation/snippets/automatic-beam-subdivisions.ly
Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly
Documentation/snippets/beam-endings-in-score-context.ly
Documentation/snippets/beam-grouping-in-7-8-time.ly
Documentation/snippets/beams-across-line-breaks.ly
Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly
Documentation/snippets/broken-crescendo-hairpin.ly
Documentation/snippets/caesura-railtracks-with-fermata.ly
Documentation/snippets/center-text-below-hairpin-dynamics.ly
Documentation/snippets/centering-markup-on-note-heads-automatically.ly
Documentation/snippets/changing--flageolet-mark-size.ly
Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly
Documentation/snippets/changing-beam-knee-gap.ly
Documentation/snippets/changing-chord-separator.ly
Documentation/snippets/changing-form-of-multi-measure-rests.ly
Documentation/snippets/changing-fret-orientations.ly
Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly
Documentation/snippets/changing-partcombine-texts.ly
Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly
Documentation/snippets/changing-the-ambitus-gap.ly
Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
Documentation/snippets/changing-the-breath-mark-symbol.ly
Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly
Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly
Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly
Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly
Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly
Documentation/snippets/changing-the-text-for-sustain-markings.ly
Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly
Documentation/snippets/changing-the-tuplet-number.ly
Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly
Documentation/snippets/chant-or-psalms-notation.ly
Documentation/snippets/chord-glissando-in-tablature.ly
Documentation/snippets/chord-name-exceptions.ly
Documentation/snippets/chord-name-major7.ly
Documentation/snippets/chordchanges-for-fretboards.ly
Documentation/snippets/chords-headword.ly
Documentation/snippets/chords.snippet-list
Documentation/snippets/clip-systems.ly
Documentation/snippets/clusters.ly
Documentation/snippets/combining-dynamics-with-markup-texts.ly
Documentation/snippets/combining-two-parts-on-the-same-staff.ly
Documentation/snippets/compound-time-signatures.ly
Documentation/snippets/conducting-signs,-measure-grouping-signs.ly
Documentation/snippets/contemporary-glissando.ly
Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly
Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly
Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly
Documentation/snippets/controlling-tuplet-bracket-visibility.ly
Documentation/snippets/creating-a-delayed-turn.ly
Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly
Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly
Documentation/snippets/creating-blank-staves.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly
Documentation/snippets/creating-double-digit-fingerings.ly
Documentation/snippets/creating-metronome-marks-in-markup-mode.ly
Documentation/snippets/creating-real-parenthesized-dynamics.ly
Documentation/snippets/creating-simultaneous-rehearsal-marks.ly
Documentation/snippets/creating-slurs-across-voices.ly
Documentation/snippets/creating-text-spanners.ly
Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly [new file with mode: 0644]
Documentation/snippets/cross-staff-tremolos.ly
Documentation/snippets/custodes.ly
Documentation/snippets/customizing-fretboard-fret-diagrams.ly
Documentation/snippets/customizing-markup-fret-diagrams.ly
Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly
Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly
Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly
Documentation/snippets/demo-midiinstruments.ly
Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly
Documentation/snippets/displaying-complex-chords.ly
Documentation/snippets/displaying-grob-ancestry.ly
Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
Documentation/snippets/dynamics-custom-text-spanner-postfix.ly
Documentation/snippets/dynamics-text-spanner-postfix.ly
Documentation/snippets/editorial-headword.ly
Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly
Documentation/snippets/engravers-one-by-one.ly
Documentation/snippets/engraving-ties-manually.ly
Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly
Documentation/snippets/expressive-headword.ly
Documentation/snippets/faking-a-hammer-in-tablatures.ly
Documentation/snippets/figured-bass-headword.ly
Documentation/snippets/fingering-symbols-for-wind-instruments.ly
Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly
Documentation/snippets/flamenco-notation.ly
Documentation/snippets/flat-flags-and-beam-nibs.ly
Documentation/snippets/forcing-horizontal-shift-of-notes.ly
Documentation/snippets/forcing-hyphens-to-be-shown.ly
Documentation/snippets/fretboards-alternate-tables.ly
Documentation/snippets/fretted-headword.ly
Documentation/snippets/fretted-string-harmonics-in-tablature.ly
Documentation/snippets/generating-random-notes.ly
Documentation/snippets/graphical-and-text-woodwind-diagrams.ly
Documentation/snippets/grid-lines--changing-their-appearance.ly
Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly
Documentation/snippets/grouping-beats.ly
Documentation/snippets/guitar-slides.ly
Documentation/snippets/guitar-strum-rhythms.ly
Documentation/snippets/hairpins-with-different-line-styles.ly
Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly
Documentation/snippets/hymn-template.ly
Documentation/snippets/incipit.ly
Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly
Documentation/snippets/inserting-a-caesura.ly
Documentation/snippets/isolated-percent-repeats.ly
Documentation/snippets/jazz-combo-template.ly
Documentation/snippets/keep-change-clefs-full-sized.ly
Documentation/snippets/keyboard-headword.ly
Documentation/snippets/keyboards.snippet-list
Documentation/snippets/letter-tablature-formatting.ly
Documentation/snippets/line-arrows.ly
Documentation/snippets/lyrics-alignment.ly
Documentation/snippets/lyrics-old-spacing-settings.ly
Documentation/snippets/makam-example.ly
Documentation/snippets/making-slurs-with-complex-dash-structure.ly
Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly
Documentation/snippets/measure-counter.ly
Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly
Documentation/snippets/modern-tab-text-clef.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/moving-dotted-notes-in-polyphony.ly
Documentation/snippets/moving-slur-positions-vertically.ly
Documentation/snippets/multi-measure-rest-markup.ly
Documentation/snippets/nesting-staves.ly
Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly
Documentation/snippets/non-default-tuplet-numbers.ly
Documentation/snippets/non-traditional-key-signatures.ly
Documentation/snippets/numbers-as-easy-note-heads.ly
Documentation/snippets/open-string-harmonics-in-tablature.ly
Documentation/snippets/orchestra,-choir-and-piano-template.ly
Documentation/snippets/ottava-text.ly
Documentation/snippets/partcombine-and-autobeamoff.ly
Documentation/snippets/percent-repeat-count-visibility.ly
Documentation/snippets/percent-repeat-counter.ly
Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly
Documentation/snippets/piano-template-simple.ly
Documentation/snippets/piano-template-with-centered-dynamics.ly
Documentation/snippets/piano-template-with-centered-lyrics.ly
Documentation/snippets/piano-template-with-melody-and-lyrics.ly
Documentation/snippets/pitches-headword.ly
Documentation/snippets/placement-of-right-hand-fingerings.ly
Documentation/snippets/polyphony-in-tablature.ly
Documentation/snippets/positioning-arpeggios.ly
Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly
Documentation/snippets/positioning-grace-notes-with-floating-space.ly
Documentation/snippets/positioning-multi-measure-rests.ly
Documentation/snippets/positioning-text-markups-inside-slurs.ly
Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly
Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly
Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly
Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly
Documentation/snippets/printing-hairpins-using-al-niente-notation.ly
Documentation/snippets/printing-marks-at-the-end-of-a-line.ly
Documentation/snippets/printing-marks-on-every-staff.ly
Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly
Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly
Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly
Documentation/snippets/quoting-another-voice-with-transposition.ly
Documentation/snippets/quoting-another-voice.ly
Documentation/snippets/recorder-fingering-chart.ly
Documentation/snippets/redefining-grace-note-global-defaults.ly
Documentation/snippets/removing-bar-numbers-from-a-score.ly
Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly
Documentation/snippets/removing-the-first-empty-line.ly
Documentation/snippets/repeats-headword.ly
Documentation/snippets/rest-styles.ly
Documentation/snippets/reverting-default-beam-endings.ly
Documentation/snippets/rhythms-headword.ly
Documentation/snippets/satb-choir-template---four-staves.ly
Documentation/snippets/screech-boink.ly
Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly
Documentation/snippets/setting-system-separators.ly
Documentation/snippets/setting-the-double-repeat-default-for-volte.ly
Documentation/snippets/setting-the-minimum-length-of-hairpins.ly
Documentation/snippets/shortening-volta-brackets.ly
Documentation/snippets/showing-chords-at-changes.ly
Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly
Documentation/snippets/simple-lead-sheet.ly
Documentation/snippets/simultaneous-headword.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly
Documentation/snippets/single-staff-template-with-notes-and-chords.ly
Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly
Documentation/snippets/single-staff-template-with-only-notes.ly
Documentation/snippets/slides-in-tablature.ly
Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly
Documentation/snippets/staff-headword.ly
Documentation/snippets/stand-alone-two-column-markup.ly
Documentation/snippets/stem-and-beam-behavior-in-tablature.ly
Documentation/snippets/string-quartet-template-simple.ly
Documentation/snippets/string-quartet-template-with-separate-parts.ly
Documentation/snippets/subdividing-beams.ly
Documentation/snippets/text-headword.ly
Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly
Documentation/snippets/transcription-of-ancient-music-with-incipit.ly
Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
Documentation/snippets/tweaking-clef-properties.ly
Documentation/snippets/tweaking-grace-layout-within-music.ly
Documentation/snippets/tweaks-and-overrides.snippet-list
Documentation/snippets/unfretted-headword.ly
Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly
Documentation/snippets/using-alternative-flag-styles.ly
Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly
Documentation/snippets/using-double-slurs-for-legato-chords.ly
Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly
Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly
Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly
Documentation/snippets/using-the-whiteout-property.ly
Documentation/snippets/using-ties-with-arpeggios.ly
Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly
Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly
Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly
Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly
Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly
Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly
Documentation/snippets/vocal-ensemble-template.ly
Documentation/snippets/vocal-headword.ly
Documentation/snippets/volta-below-chords.ly
Documentation/snippets/wind-headword.ly
Documentation/snippets/woodwind-diagrams-key-lists.ly
Documentation/snippets/woodwind-diagrams-listing.ly
Documentation/translations.itexi
Documentation/usage/external.itely
Documentation/usage/suggestions.itely
Documentation/web/community.itexi
Documentation/web/download.itexi
Documentation/web/manuals.itexi
Documentation/web/news-front.itexi
Documentation/web/news.itexi
Documentation/web/server/lilypond.org.htaccess
Documentation/zh/translations.itexi
VERSION
input/regression/ambitus-with-ligature.ly [new file with mode: 0644]
input/regression/beam-skip.ly [new file with mode: 0644]
input/regression/breathing-sign-custom-staff.ly [new file with mode: 0644]
input/regression/chord-tremolo-other-commands.ly [new file with mode: 0644]
input/regression/cue-clef-keysignature.ly [new file with mode: 0644]
input/regression/display-lily-tests.ly
input/regression/dynamics-alignment-autobreak.ly [new file with mode: 0644]
input/regression/dynamics-alignment-breaker-linebreak.ly [new file with mode: 0644]
input/regression/dynamics-alignment-breaker-order.ly [new file with mode: 0644]
input/regression/dynamics-alignment-breaker-subsequent-spanner.ly [new file with mode: 0644]
input/regression/dynamics-alignment-no-line-linebreak.ly [new file with mode: 0644]
input/regression/event-listener-output.ly
input/regression/footnote-auto-numbering-page-reset.ly [new file with mode: 0644]
input/regression/footnote-auto-numbering.ly [new file with mode: 0644]
input/regression/footnote-break-visibility.ly
input/regression/footnote-spanner.ly
input/regression/footnote.ly
input/regression/glissando-broken-multiple.ly [new file with mode: 0644]
input/regression/grace-slashed-no-slur.ly [new file with mode: 0644]
input/regression/horizontal-bracket-tweak.ly [new file with mode: 0644]
input/regression/lyric-combine-derived-voice.ly [new file with mode: 0644]
input/regression/lyric-combine-empty-warning.ly [new file with mode: 0644]
input/regression/markup-center-align-nocollision.ly [new file with mode: 0644]
input/regression/metronome-mark-loose-column.ly [new file with mode: 0644]
input/regression/multi-measure-rest-standard.ly [new file with mode: 0644]
input/regression/multi-measure-rest-tweaks.ly [new file with mode: 0644]
input/regression/multi-measure-rest-usebreve.ly [deleted file]
input/regression/page-breaking-min-distance2.ly
input/regression/phrasing-slur-multiple.ly [new file with mode: 0644]
input/regression/profile-property-access.ly
input/regression/remove-empty-context-mod.ly [new file with mode: 0644]
input/regression/rest-ledger.ly
input/regression/scheme-engraver-instance.ly
input/regression/set-once.ly [new file with mode: 0644]
input/regression/slur-grace.ly [new file with mode: 0644]
input/regression/slur-multiple-linebreak.ly [new file with mode: 0644]
input/regression/slur-multiple.ly [new file with mode: 0644]
input/regression/song-skip-noword.ly
input/regression/stanza-number.ly
input/regression/stem-tremolo-note-column.ly [new file with mode: 0644]
input/regression/system-start-bar-collapse-staffspace.ly [new file with mode: 0644]
input/regression/text-spanner-full-rest.ly [new file with mode: 0644]
input/regression/tie-pitched-trill.ly [new file with mode: 0644]
input/regression/tuplet-bracket-direction.ly [new file with mode: 0644]
input/regression/tuplet-bracket-outside-staff-priority.ly [new file with mode: 0644]
input/regression/tuplet-number-outside-staff-priority.ly [new file with mode: 0644]
lily/align-interface.cc
lily/axis-group-interface.cc
lily/balloon.cc
lily/beam.cc
lily/break-align-engraver.cc
lily/breathing-sign.cc
lily/completion-note-heads-engraver.cc
lily/constrained-breaking.cc
lily/dynamic-align-engraver.cc
lily/grob-scheme.cc
lily/horizontal-bracket-engraver.cc
lily/include/axis-group-interface.hh
lily/include/duration.hh
lily/include/ligature-engraver.hh
lily/include/page-breaking.hh
lily/include/page-layout-problem.hh
lily/include/pitch.hh
lily/include/property-iterator.hh
lily/include/stem-tremolo.hh
lily/include/stem.hh
lily/include/system.hh
lily/key-engraver.cc
lily/lexer.ll
lily/ligature-engraver.cc
lily/line-spanner.cc
lily/lyric-combine-music-iterator.cc
lily/mensural-ligature-engraver.cc
lily/metronome-engraver.cc
lily/midi-item.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/new-dynamic-engraver.cc
lily/output-def-scheme.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/page-spacing.cc
lily/pango-font.cc
lily/paper-book.cc
lily/paper-system.cc
lily/parser.yy
lily/phrasing-slur-engraver.cc
lily/pitch.cc
lily/property-iterator.cc
lily/rest.cc
lily/simple-spacer.cc
lily/slur-configuration.cc
lily/slur-engraver.cc
lily/spanner.cc
lily/spring.cc
lily/staff-performer.cc
lily/stem-engraver.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/system-start-delimiter.cc
lily/system.cc
lily/text-spanner-engraver.cc
lily/tie-engraver.cc
lily/tuplet-bracket.cc
lily/tuplet-engraver.cc
lily/tuplet-number.cc
lily/vaticana-ligature-engraver.cc
ly/context-mods-init.ly [new file with mode: 0644]
ly/declarations-init.ly
ly/engraver-init.ly
ly/event-listener.ly
ly/festival.ly
ly/grace-init.ly
ly/graphviz-init.ly
ly/init.ly
ly/music-functions-init.ly
ly/paper-defaults-init.ly
ly/predefined-guitar-fretboards.ly
ly/titling-init.ly
mf/GNUmakefile
mf/bigcheese.pe.in [deleted file]
mf/feta-braces.mf
mf/feta-flags-generic.mf [new file with mode: 0644]
mf/feta-flags.mf
mf/feta-flags11.mf [new file with mode: 0644]
mf/feta-flags13.mf [new file with mode: 0644]
mf/feta-flags14.mf [new file with mode: 0644]
mf/feta-flags16.mf [new file with mode: 0644]
mf/feta-flags18.mf [new file with mode: 0644]
mf/feta-flags20.mf [new file with mode: 0644]
mf/feta-flags23.mf [new file with mode: 0644]
mf/feta-flags26.mf [new file with mode: 0644]
mf/feta-generic.mf
mf/feta-noteheads-generic.mf
mf/feta-noteheads-test-generic.mf [deleted file]
mf/feta-noteheads.mf
mf/feta-params.mf
mf/feta-rests.mf
mf/feta-scripts.mf
mf/parmesan-noteheads.mf
ps/music-drawing-routines.ps
python/auxiliar/postprocess_html.py
python/convertrules.py
python/fontextract.py
python/lilylib.py
python/musicxml.py
python/rational.py
scm/backend-library.scm
scm/define-grob-interfaces.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-display-methods.scm
scm/define-music-properties.scm
scm/define-music-types.scm
scm/display-lily.scm
scm/document-identifiers.scm
scm/document-translation.scm
scm/documentation-lib.scm
scm/font.scm
scm/framework-eps.scm
scm/framework-ps.scm
scm/framework-scm.scm
scm/framework-socket.scm
scm/framework-svg.scm
scm/graphviz.scm
scm/layout-beam.scm
scm/lily-library.scm
scm/lily.scm
scm/markup.scm
scm/music-functions.scm
scm/output-lib.scm
scm/output-socket.scm
scm/output-svg.scm
scm/page.scm
scm/ps-to-png.scm
scm/safe-lily.scm
scm/song.scm
scm/stencil.scm
scm/translation-functions.scm
scripts/auxiliar/fixcc.py
scripts/auxiliar/lily-git.tcl
scripts/auxiliar/makelsr.py
scripts/build/create-weblinks-itexi.py
scripts/build/gen-emmentaler-scripts.py
scripts/build/mf-to-table.py
scripts/build/website_post.py
scripts/lilymidi.py
scripts/lilypond-book.py
scripts/lilypond-invoke-editor.scm
scripts/musicxml2ly.py
stepmake/stepmake/generic-targets.make
stepmake/stepmake/metafont-rules.make
stepmake/stepmake/texinfo-rules.make
tex/txi-hu.tex [new file with mode: 0644]

index babd796462716ad6e485b57d1c78d26cee7db953..b397a7468900a436682329ba61e7ac1408207416 100644 (file)
@@ -36,11 +36,11 @@ See user manual, \NAME\
 @finalout
 
 @node Top
-@top New features in 2.14 since 2.12
+@top New features in 2.16 since 2.14
 
 @allowcodebreaks false
 
-@itemize @bullet
+@itemize
 
 @ignore
 
@@ -61,614 +61,17 @@ which scares away people.
 
 @end ignore
 
-@item
-Lilypond now helps beams avoid collisions with other grobs!  This feature
-works completely with manual beams.  It also works for all automatic beams
-that do not end right before a change in staff.  For this special case, please
-use manual beams.
-
-@item
-The Articulate script by Peter Chubb, which is GPLv3 licensed, is now
-a part of the distribution.  It allows easy generation of improved
-MIDI files that perform non-legato by default, legato slurs, staccato,
-tempo markings, trills, etc.
-
-@example
-\include "articulate.ly"
-\articulate <<
-      all the rest of the score...
->>
-@end example
-
-@item
-Single beat repeats for sixteenth or shorter notes and beat repeats for
-measures containing notes of varying durations are now supported.
-
-@lilypond[fragment,relative=2]
-\repeat percent 2 { c16 d }
-\repeat percent 2 { c32 e }
-\repeat percent 2 { c64 f }
-\repeat percent 2 { c128 g' }
-@end lilypond
-
-
-@item
-Lilypond now engraves woodwind fingering charts.
-
-@lilypond
-\relative c' {
-  \textLengthOn
-  des1^\markup {
-    \woodwind-diagram #'bassoon #'((lh . (thumb-cis))
-                                   (cc . (one two three five six))
-                                   (rh . (f)))
-    } _"bassoon"
-  c1^\markup {
-    \woodwind-diagram #'oboe #'((rh . (c))
-                                (lh . ())
-                                (cc . (one two three four five six)))
-    } _"oboe"
-
-}
-@end lilypond
-
-@item
-MIDI output has been improved
-@itemize @bullet
-@item the option @code{\set Score.midiChannelMapping = #'voice} puts each voice on its own midi MIDI channel
-@item the option @code{\set Score.midiChannelMapping = #'instrument} puts identical instruments on the same MIDI channel.  This means that e.g. for a full orchestral score there are always 16 (15 plus percussion) differently sounding instruments available, unrestricted by the number of staves or voices.  (Some MIDI players will cut off notes, however, if two voices play the same pitch simultaneously on the same channel.) This option also stores each voice in a separate track in the MIDI file.
-@item the default, @code{\set Score.midiChannelMapping = #'staff}, assigns one MIDI channel per staff.  This setting allows instrument changes (implemented as MIDI program changes) to re-use single MIDI channel.
-@item dynamics are now rendered as note velocities, no longer as midi volume.  This improves the sound on [high end] midi renderers.
-@end itemize
-
-@item
-MIDI-import through Midi2ly is improved
-@itemize @bullet
-@item Midi2ly now also works on Windows systems
-@item MIDI-files with more than 32 tracks are now handled
-@item notes on certain simultaneous voices no longer ignored
-@item notes overrunning a bar line are no longer truncated
-@item initial key signature and time signature are respected
-@item a problem with octaves in subsequent tracks/voices is fixed
-@item initial support for multiple voices notated on one staff
-@item the instrumentName is set from track data
-@item new --skip option, rests are displayed by default
-@item rests overrunning a bar line are not truncated
-@item new --include-header option for setting titles
-@item new --preview option for big MIDI-files
-@end itemize
-The first feature was sponsored by Valentin Villenave,
-the other features were sponsored by Image-Line Software for FL Studio.
-
-@item
-A new @code{Completion_rest_engraver} is available for automatically
-converting long rests which overrun bar lines, matching the
-@code{Completion_heads_engraver} for notes
-@example
-\layout @{
-  \context @{
-    \Voice
-    \remove "Note_heads_engraver"
-    \consists "Completion_heads_engraver"
-    \remove "Rest_engraver"
-    \consists "Completion_rest_engraver"
-  @}
-@}
-@end example
-This feature was sponsored by Image-Line Software for FL Studio.
-
-@item
-Dots can be added to the table of contents items using:
-@example
-\paper @{
-  tocItemMarkup = \tocItemWithDotsMarkup
-@}
-@end example
-
-@item
-New markup commands @code{\pattern} and @code{\fill-with-pattern} are available.
-@lilypond
-\markup \column {
-  \pattern #3 #Y #0.3 \flat
-  \null
-  \pattern #7 #X #2 \flat
-  \override #'(line-width . 40) \fill-with-pattern #1 #CENTER . left right
-}
-@end lilypond
-
-@item
-A minimal composer toolkit of modal transformations is provided.
-A motif may be @notation{transposed}, @notation{inverted} and/or
-converted to its @notation{retrograde} within any scale.
-
-@lilypond
-pentatonicScale = \relative a' { a c d f g }
-motif = \relative c'' { d8 c f,4 <a f'> <a f'> }
-
-\new Staff <<
-  {
-    \partial 4
-    \pentatonicScale
-    \motif
-    \modalTranspose c a, \pentatonicScale \motif
-    \modalInversion d'' a' \pentatonicScale \motif
-    \retrograde \motif
-  }
-  {
-    \partial 4
-    s4^"pentatonic scale"
-    s1
-    s1^"motif"
-    s1^"transposition"
-    s1^"inversion"
-    s1^"retrograde"
-  }
->>
-@end lilypond
-
-@item
-Added minimal support for black mensural notation.
-
-@item
-Enhanced support for obliqua shapes within white mensural ligatures.
-
-@lilypond
-\context MensuralStaff
-{
-  \clef "petrucci-c3"
-  \[
-    \override NoteHead #'style = #'semipetrucci
-    c'\maxima
-    \override NoteHead #'style = #'blackpetrucci
-    a\breve
-    \revert NoteHead #'style
-    \override NoteHead #'ligature-flexa = ##t
-    \override NoteHead #'flexa-width = #3
-    g
-    g'
-    \override NoteHead #'flexa-width = #5
-    c'
-    d'
-    \revert NoteHead #'style
-    c'\longa
-  \]
-}
-@end lilypond
-
-@item
-New markup functions @code{\with-link} and @code{\page-link} that add
-hyperlinks to a given label or a given page number. This works in the PDF
-backend only. All entries to the table of contents now automatically add
-hyperlinks to the pages they are referring to.
-
-@item
-Compound time signatures are now supported by the @code{\compoundMeter} command,
-which can be used instead of @code{\time}:
-
-@lilypond
-\relative c'' {
-  \compoundMeter #'(3 1 8)
-  c8 c c c
-  \compoundMeter #'((2 8) (5 8))
-  c8 c c c c c c
-  \compoundMeter #'((1 2 3 8) (1 4) (3 8))
-  c8 c c c c c c4 c8 c c
-}
-@end lilypond
-
-@item
-Lyrics above a staff must have their @code{staff-affinity} set to
-@code{DOWN} or must have their @code{alignAboveContext} property
-set in order to be properly aligned.  For more information, see
-@ruser{Placing lyrics vertically}.
-
-@item
-@code{stringTunings} property values have changed from a list of
-semitones above middle C to a list of LilyPond pitch values.
-convert-ly will handle the change automatically where the value
-of @code{stringTunings} is set to a Scheme constant value.
-
-New commands @code{makeStringTuning} and @code{contextStringTuning}
-allow the creation of string tunings in the form of a Lilypond
-chord construct.
-
-@item
-By using @code{\cueDuringWithClef}, cue notes can now also have their own
-clef, which is correctly reset at the end of the cue notes.  At the begin
-of each line, the standard clef is still displayed, but the cue clef is
-shown after the time/key signature in smaller size.
-
-@lilypond
-vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 }
-\addQuote vIQuote { \vI }
-
-Solo = \relative c {
-  \clef "bass"
-  \cueDuringWithClef #"vIQuote" #DOWN #"treble" { R1 } |
-  c4 \cueDuringWithClef #"vIQuote" #DOWN #"treble" {
-    r4 r2 |
-    r4
-  } c4 c2 |
-  \cueDuringWithClef #"vIQuote" #DOWN "soprano" { R1*2 \break R1 } |
-  c1
-}
-
-\score {
-  <<
-    \new Staff \new Voice \Solo
-  >>
-}
-@end lilypond
-
-
-@item
-Note names can be selected with a new
-@code{@bs{}language "italiano"} command, which
-can be used in safe mode.  The old
-@code{@bs{}include "italiano.ly"} syntax is
-still supported for now, but will be deprecated
-in the future.
-
-@item
-autobeaming is now disabled by @code{\cadenzaOn} and enabled by
-@code{\cadenzaOff}.  Beaming in cadenzas should be indicated manually.
-Also, if a cadenza is used in a piece with autobeaming disabled, it
-will need to be disabled again after the cadenza.
-
-@item
-The user is now able to specify the name of the predefined fretboard
-table.  This allows the use of multiple tables, with switching between them
-based on user input.
-
-@item
-The part-combiner's decision to combine/not combine notes can now be customized
-
-@lilypond[quote,relative=2]
-\partcombine
-\relative c' { c2 \partcombineApart c | \partcombineChordsOnce e' e }
-\relative c' { c2 \partcombineApart c | c c }
-@end lilypond
-
-@item
-Tablature staves show fret numbers only by default. To get the
-former style, @code{\tabFullNotation} is provided.
-
-@item
-Funk-style and Walker-style shape notes have been added.
-
-@item
-Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext}
-is used.
-
-@item
-New option @code{-dinclude-settings=INCLUDEFILE.ly}, which causes lilypond
-to include the given file before the score is processed. This allows the
-user to change global settings without the need to change the score itself.
-That way, several different editions/version (e.g. different page sizes)
-can be generated from a file without having to modify the score for each
-version.
-
-@item
-The autobeaming settings syntax has been changed.  beatLength,
-beatGrouping, beamSettings, and measureGrouping have all been eliminated.
-Autobeaming is now controlled by baseMoment, beatStructure, and
-beamExceptions.  Default settings for each of these properties can be
-stored for any time signature in time-signature-settings, so that
-when the time signature is changed, the autobeaming will automatically
-change.  The new syntax should be much easier and require fewer
-overrides.
 
-@item
-The SVG backend has optional support for
-@uref{http://www.w3.org/Submission/WOFF, WOFF fonts}.  Using the Scheme
-option @code{-d svg-woff} together with the SVG backend selection
-@code{-d backend=svg}, produces SVG output with CSS WOFF font selection.
-
-@item
-The LilyPond G clef has been rotated 1.5 degrees clockwise for improved
-balance.  The old and new versions can be compared by looking at the
-documentation:
-@uref{http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs,
-old version},
-@uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#Clef-glyphs,
-new version}.
-
-
-@item
-Text crescendo spanners can now be added directly using @code{\cresc},
-@code{\dim} and @code{\decresc}.
-@lilypond[quote,relative=2]
-c4\cresc c c c\f |
-c4\dim c c c\!
-@end lilypond
-
-
-@item
-The documented syntax of @samp{lilypond} environments in the @LaTeX{}
-mode of @command{lilypond-book} has been changed to conform with
-standard @LaTeX{} syntax: options now come after the environment name:
-@example
-\begin@{lilypond@}[@var{options}] @dots{}
-@end example
-
-The previous syntax with options after @samp{\begin} is still accepted
-by @command{lilypond-book} but deprecated.  Something like
-@example
-sed -i '/begin\[/s/begin\(\[[^]]*]\)\(@{lilypond@}\)/begin\2\1/'
-@end example
-
-might do the trick for conversion.
-
-@item
-Aesthetics of shape note heads have been enhanced.  Variable line thicknesses
-have been implemented.  All note widths have been made consistent.
-Minor shape note commands that use the relative major key for scale steps
-have been added.
-
-@item
-A variant of the Segno sign is provided:
-@lilypond[quote,relative=2]
-c4 d e f \bar "S"
-g4 f e d
-@end lilypond
-
-@item
-Context modifications (@code{\with} blocks) can be stored in variables and
-inserted into contexts or other @code{\with} blocks:
-@lilypond[quote,verbatim]
-coloredheads = \with { \override NoteHead #'color = #red }
-noclef = \with { \remove "Clef_engraver" }
-\score {
-  \new Staff {
-    \new Voice \with { \coloredheads } \relative c' { c4 e g c }
-  }
-  \layout {
-    \context {
-      \Staff
-      \noclef
-    }
-  }
-}
-@end lilypond
-
-@item
-A half-open articulation was added:
-@lilypond[quote,relative=2]
-c4\halfopen
-@end lilypond
-This is sometimes used to indicate half-open hi-hats.
-
-@item
-The Unicode Bidirectional Algorithm is now fully supported for
-single-line markup due to enhanced integration with Pango.
-
-@item
-LilyPond is now licensed under the GNU GPL v3+.
-
-@item
-In tablature, frets can be indicated with labels other than numbers:
-
-@lilypond[verbatim,quote,relative=1]
-\new TabStaff
-\with {
-  stringTunings = #`(,(ly:make-pitch 1 3 NATURAL)
-                     ,(ly:make-pitch 1 1 NATURAL)
-                    ,(ly:make-pitch 0 5 NATURAL)
-                    ,(ly:make-pitch 0 3 NATURAL)
-                    ,(ly:make-pitch 0 1 NATURAL)
-                    ,(ly:make-pitch -1 5 NATURAL))
-  tablatureFormat = #fret-letter-tablature-format
-}
-\new TabVoice {
-  \set fretLabels = #`(,(markup #:with-color red "a")
-                       "b"
-                       ,(markup #:italic #:smaller "c"))
-  <f d>4. <bes>8 <g e>4
-}
-@end lilypond
-
-@item
-Layout objects can be printed over a white background, which whites-out objects
-in lower layers which lie beneath:
-
-@lilypond[verbatim,quote,relative=1]
-\time 3/4
-\override Staff.StaffSymbol #'layer = #4
-\once \override Tie #'layer = #2
-b'2.~
-\once \override Staff.TimeSignature #'whiteout = ##t
-\once \override Staff.TimeSignature #'layer = #3
-\time 5/4
-b4
-@end lilypond
-
-@item
-Chords can be repeated using the @code{q} shortcut:
-
-@lilypond[verbatim,quote,relative=2]
-<c e g>8.-^ q16 q4-^
-@end lilypond
-
-@item
-With two-sided mode, margins for odd and even pages can be set using
-@code{inner-margin} and @code{outer-margin}:
-
-@example
-\paper @{
-  two-sided = ##t
-  inner-margin = 10 \mm
-  outer-margin = 20 \mm
-@}
-@end example
-
-@item
-Paper margin defaults, as specified in @file{ly/paper@/-defaults-init.ly}, apply
-to the default paper size (a4) and are automatically scaled according to the
-paper size chosen.
-
-@item
-All combinations of @code{left-margin}, @code{right-margin} and
-@code{line-width} work now.  There is no more need to set @code{line-width}
-manually unless you explicitly want to.
-
-@item
-Support for using an alternative music font, such as Gonville, is now
-added.
-
-@item
-In addition to the existing @code{\hspace} markup command,
-a new @code{\vspace} command has been added to provide an easy
-and flexible way to add vertical space in markups.
-
-@item
-The direction of manual beams can be set with @code{^[} and @code{_[}.
-
-@item
-A version of the breve note head has been added with two vertical lines on each side.
-@lilypond[quote,relative=2]
-\time 4/2
-\override Staff.NoteHead #'style = #'altdefault
-c\breve | b\breve
-@end lilypond
-
-@item
-Instrument names and vocal names now take into account the extent of
-system start delimiters in other staves for their positioning,
-resulting in improved default alignment for left-, center- and
-right-aligned names.
-@lilypond[quote,indent=18\mm]
-<<
-  \new StaffGroup <<
-    \new GrandStaff <<
-      \new Staff {
-        \set Staff.instrumentName = #"Piccolo"
-        c''1
-      }
-      \new Staff {
-        \set Staff.instrumentName = #"Flute"
-        c''1
-      }
-    >>
-    \new Staff {
-      \set Staff.instrumentName = #"Bassoon"
-      \clef tenor
-      c'1
-    }
-  >>
-  \new PianoStaff <<
-    \set PianoStaff.instrumentName = #"Piano"
-    \context Staff = "up" {
-      c'1
-    }
-    \context Staff = "down" {
-      \clef bass
-      c1
-    }
-  >>
->>
-@end lilypond
-
-@item
-Braces in markup can now be selected by point size using the markup commands
-@code{\left-brace} and @code{\right-brace}.
-@lilypond[quote]
-\markup {
-  \left-brace #35
-  \hspace #2
-  \right-brace #45
-}
-@end lilypond
 
 @item
-Intermediate .ps files which are created by LilyPond
-during compilation are now deleted by default.  To keep them,
-add the following line to your input files:
-@example
-#(ly:set-option 'delete-intermediate-files #f)
-@end example
-
-@item
-Dashed and dotted slurs, phrasing slurs, and ties
-have been made variable thickness, and
-partially dashed slurs are now available:
-@lilypond[quote,relative=2]
-\slurDashed
-c4( d e f) |
-\slurDotted
-g4( f e d) |
-\slurHalfDashed
-c4( d e f)
-@end lilypond
-
-@item
-An eyeglasses markup was added, indicating strongly to look at the
-conductor for instructions:
-@lilypond[quote,relative=2]
-\mark \markup { \eyeglasses }
-c4_\markup { \eyeglasses }
-@end lilypond
-
-@item
-A snap-pizzicato (also known as Bartok-pizzicato) articulation was added:
-@lilypond[quote,relative=2]
-c4\snappizzicato
-@end lilypond
-
-@item
-Tuplet number formatting functions are now available to print other fractions
-and to add notes to the number or fraction:
-@lilypond[quote,relative=2]
-\once \override TupletNumber #'text =
-  #(tuplet-number::non-default-tuplet-denominator-text 7)
-\times 2/3 { c4. c4. c4. c4. }
-
-\once \override TupletNumber #'text =
-  #(tuplet-number::non-default-tuplet-fraction-text 12 7)
-\times 2/3 { c4. c4. c4. c4. }
-\once \override TupletNumber #'text =
-  #(tuplet-number::append-note-wrapper
-    (tuplet-number::non-default-tuplet-fraction-text 12 7) "8")
-\times 2/3 { c4. c4. c4. c4. }
-
-\once \override TupletNumber #'text =
-  #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text "4")
-\times 2/3 { c8 c8 c8 c8 c8 c8 }
-\once \override TupletNumber #'text =
-  #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text "4")
-\times 2/3 { c8 c8 c8 c8 c8 c8 }
-
-\once \override TupletNumber #'text =
-  #(tuplet-number::fraction-with-notes "4." "8")
-\times 2/3 { c4. c4. c4. c4. }
-\once \override TupletNumber #'text =
-  #(tuplet-number::non-default-fraction-with-notes 12 "8" 4 "4")
-\times 2/3  { c4. c4. c4. c4. }
-@end lilypond
-
-@item
-FretBoards now have a chordChanges property to keep repeated FretBoard objects
-from being typeset.
-
-@item
-The vertical spacing engine has been drastically changed, making
-it more flexible and easier to control.
-The spacing between staves within a system can now change
-to better use the space on the page.
-User-defined contexts may participate in this flexible spacing,
-depending on how their @code{staff-affinity} is defined.
-Some page formatting variables (@code{page-top-space},
-@code{between-system-space -padding}, and
-@code{before- between- after-title-space}) have been replaced
-by flexible vertical dimensions.
+Glissandi can now span multiple lines.
 
 @end itemize
 
-
-
 @ifhtml
 For older news, go to
+@uref{http://lilypond.org/doc/v2.14/Documentation/topdocs/NEWS.html},
 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
-@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html},
 or @uref{../,go back} to the Documentation index.
 
 
index 11bae886e4613c31e968b31deb11a3cc2aa51268..ab45cbaf32cbd4fdd1af09c603977dd5b8ede136 100644 (file)
@@ -197,8 +197,8 @@ UNTRANSLATED NODE: IGNORE ME
 @macro imageClickable{IMAGE-FILE, EXT, MORE-TEXT, CLICK-FILE, CLICK-EXT, POSITION}
 @html
 <div class="float-\POSITION\">
-  <a class="clickable" href="../pictures/\CLICK-FILE\.\CLICK-EXT\">
-    <img src="../pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
+  <a class="clickable" href="pictures/\CLICK-FILE\.\CLICK-EXT\">
+    <img src="pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
   </a>
   <p style="text-align: center">
     \MORE-TEXT\
@@ -215,7 +215,7 @@ UNTRANSLATED NODE: IGNORE ME
 
 @macro imageFloat{IMAGE-FILE, EXT, POSITION}
 @html
-<img class="float-\POSITION\" src="../pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
+<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
 @end html
 @iftex
 @image{pictures/\IMAGE-FILE\,,,\IMAGE-FILE\,\EXT\}
@@ -228,7 +228,7 @@ UNTRANSLATED NODE: IGNORE ME
 @macro imageId{ID, IMAGE-FILE, EXT, ALT}
 @html
 <div id="\ID\">
-  <img src="../pictures/\IMAGE-FILE\.\EXT\" alt="\ALT\">
+  <img src="pictures/\IMAGE-FILE\.\EXT\" alt="\ALT\">
 </div>
 @end html
 @iftex
index 26b3a26fbbf00ef0416c2bde966bfcfe253ad4f1..fd951aaa92cbd14fad597860a0db28888c26d09a 100644 (file)
@@ -61,6 +61,7 @@ Copyright @copyright{} 2007--2011 by the authors.
 * Programming work::
 * Release work::
 * Build system notes::
+* Modifying the feta font::
 * Administrative policies::
 
 Appendices
@@ -87,6 +88,7 @@ Appendices
 @include contributor/programming-work.itexi
 @include contributor/release-work.itexi
 @include contributor/build-notes.itexi
+@include contributor/feta-font.itexi
 @include contributor/administration.itexi
 
 @include fdl.itexi
index fc6c15ce276f95b0e8e1111a82953e54534ca0fe..5c1abe6c80c5869304766cf8aed7a5896e4fc4df 100644 (file)
@@ -163,6 +163,7 @@ difficult tasks.
 * Motivation::
 * Ongoing jobs::
 * Policy decisions::
+* Policy decisions (finished)::
 @end menu
 
 @node Motivation
@@ -303,14 +304,15 @@ Technical requirements: development environment (such as
 @subsection Policy decisions
 
 There are a number of policy decisions -- some of them fairly
-important -- which we have been postponing for a few years.  When
-GOP begins, we will start discussing them.
+important -- which we have been postponing for a few years.  We
+are now discussing them slowly and thoroughly; agenda and exact
+proposals are online:
 
-@warning{The fact that we are not arguing about them right now is
-not, I repeat @strong{not}, an indication that we do not feel that
-these issues are not important.  It is simply that if we began
-talking about them now, it would postpone the 2.14 release for a
-few months.}
+@example
+@uref{http://lilypond.org/~graham/gop/index.html}
+@end example
+
+Below is a list of policies which are not @qq{on the agenda} yet.
 
 Note that the presence of an item on this list does @emph{not}
 mean that everybody thinks that something needs to be done.
@@ -319,12 +321,10 @@ should discuss it.  We are not going to filter this list; if any
 developer thinks we should discuss something, just add it to the
 bottom of the list.  (the list is unsorted)
 
-Once GOP starts, the list will be sorted into a rough agenda.  We
-will probably introduce one topic each week -- yes, it will
-therefore take months to get through everything, but we must
-balance productive work vs. policy administration.  If we find
-that we settle questions faster (or slower) than predicted, we
-will of course change the speed of new topic introductions.
+As GOP progresses, items from this list will be put on the agenda
+and removed from this list.  I generally try to have one month's
+discussion planned in advance, but I may shuffle things around to
+respond to any immediate problems in the developer community.
 
 There are some item(s) not displayed here; these are questions
 that were posed to me privately, and I do not feel justified in
@@ -360,10 +360,9 @@ away.  This is not good.
 
 (prep: 2 hours.  discuss: 10 hours)
 
-@item @strong{Lessons from the 2.14 release; future release policy}:
-What went well; what went badly? (how) should we change any
-policies pertaining to releases? Should an undocumented new
-feature count as release-blocking?
+@item @strong{Future release policy}:
+(how) should we change any policies pertaining to releases? Should
+an undocumented new feature count as release-blocking?
 
 (prep: 1 hour.  discuss: 15 hours)
 
@@ -376,22 +375,6 @@ so, who should be on it?
 @item @strong{Hackers B}:
 
 
-@item @strong{Code style}:
-New contributors sometimes struggle to follow our indentation and
-code style -- this is especially difficult when parts of our
-existing source code doesn't have a consistent style. This is
-problematic... we want new contributors to be struggling with the
-lilypond architecture, not playing games in their text editors!
-(ok, we don't actually want them to be struggling with lilypond
-internals... but given the current state of the CG, it's
-understandable, and at any rate it's still better than struggling
-with code style)
-Speaking academically, C++ code style is a "solved problem". Let's
-pick one of the existing solutions (probably either astyle,
-uncrustify, or emacs), and let a computer deal with this.
-
-(prep: 5 hours.  discuss: 15 hours)
-
 @item @strong{Git repository(s)}:
 We currently have a web/ branch in our main repo; this seems
 misleading to new developers. More generally, should we have
@@ -485,16 +468,6 @@ required merging and stuff.
 
 (prep: 2 hours.  discuss: 10 hours)
 
-@item @strong{Precise definition of Critical issues}:
-at the moment, a stable release is entirely dependent on the
-number of Critical issues, but there's some questions about
-precisely what a "Critical issue" should be.  We should clarify
-this, in conjunction with a general discussion about how often we
-want to have stable releases, how permissive we want to be about
-patches, etc etc.
-
-(prep: 1 hour.  discuss: 5 hours)
-
 @item @strong{When do we add regtests?}:
 There is a discrepancy between our stated policy on adding
 regtests, and our actual practice in handling bugs and patches.
@@ -532,8 +505,67 @@ amount of current material in either form, are important.
 
 (prep: 5 hours.  discuss: 15 hours)
 
+@item @strong{always make an issue number for patches}:
+there is a proposal that we should always have a google code issue
+number for every patch.  This proposal is closely tied to our
+choice of patch review tool; if we switch to a different tool (as
+suggested in a different proposal), this proposal may become moot.
+
+(prep: 1 hour.  discuss: 5 hours)
+
+@item @strong{initalizer lists}:
+shoudl we use initalizer lists for C++?  AFAIK they make no
+difference for built-in types, but there's some weird case where
+it's more efficient for objects, or something.
+
+Probably not worth making this a weekly thing on its own, but we
+can probably wrap it up with some other code-related questions.
+
+(prep: 15 minutes.  discuss: 3 hours)
+
 @end itemize
 
+@node Policy decisions (finished)
+@subsection Policy decisions (finished)
+
+@subheading GOP-PROP 1: python formatting
+
+We will follow the indentation described in PEP-8.
+@uref{http://www.python.org/dev/peps/pep-0008/}
+
+@itemize
+@item
+use 4 spaces per indentation level
+
+@item
+never mix tabs and spaces (for indentation)
+
+@item
+Code indented with a mixture of tabs and spaces should be
+converted to using spaces exclusively
+
+Once this is done, we should add @code{python -tt} to the build
+system to avoid such errors in the future.
+
+@end itemize
+
+There should be absolutely no tab characters for indentation in
+any @code{.py} file in lilypond git.  All such files should be
+converted to use spaces only.
+
+
+@subheading GOP-PROP 2: mentors and frogs
+
+Nothing much was decided.  The list of responsibilities was
+slightly altered; see the new one in @ref{Mentors}.  We should
+encourage more use of the Frogs mailing list.  There's a list of
+contributor-mentor pairs in:
+
+@smallexample
+@uref{https://github.com/gperciva/lilypond-extra/blob/master/people/mentors.txt}
+@end smallexample
+
+That's pretty much it.
 
 
 @node Grand LilyPond Input Syntax Standardization (GLISS)
@@ -769,7 +801,9 @@ Capitalization of identifiers: \VoiceOne ?
 @end verbatim
 
 ?  patch here:
+@smallexample
 @uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-04/msg00467.html}
+@end smallexample
 
 @item
 Personally, I find it easier to understand when there's a repeated
@@ -827,13 +861,13 @@ sequential-statement to the score."
 
 @item
 Discussion on
-http://code.google.com/p/lilypond/issues/detail?id=1322
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
 about \new vs. \context.
 
 
 @item
 Let users add their own items to the parser?  comment 11 on:
-http://code.google.com/p/lilypond/issues/detail?id=1322
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
 
 @item
 should engravers be pluralized (note_heads_engraver) or not
@@ -841,7 +875,7 @@ should engravers be pluralized (note_heads_engraver) or not
 
 @item
 should we allow numbers in identifier names?  Issue:
-http://code.google.com/p/lilypond/issues/detail?id=1670
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1670}
 
 @item
 should we officially allow accented characters?  in general, how
@@ -861,6 +895,11 @@ and never allowing
   \transpose c d e1
 @end verbatim
 
+@item
+What should be the officially encouraged way of writing music for
+transposing instruments? Maybe it should be simplified?
+See http://lists.gnu.org/archive/html/lilypond-user/2011-07/msg00130.html
+
 @end itemize
 
 
index dcb85dad30c1b5232883ac22428116cb78ced854..16726b1bc22ba128bd9844bd811f1d63bc713dba 100644 (file)
@@ -164,9 +164,9 @@ comments, and I'd guess most of it isn't needed.
 We return to @file{stepmake.make}, where we hit the make rule all:
 The first line of this is:
 
-@example
+@smallexample
 -include $(addprefix $(depth)/make/,$(addsuffix -inclusions.make, $(LOCALSTEPMAKE_TEMPLATES)))
-@end example
+@end smallexample
 
 which, when the variables are substituted, gives:
 
@@ -181,9 +181,9 @@ error message when the included file doesn't exist).
 
 And the first file doesn't exist.  Nor the second.  Next:
 
-@example
+@smallexample
 -include $(addprefix $(stepdir)/,$(addsuffix -inclusions.make, $(STEPMAKE_TEMPLATES)))
-@end example
+@end smallexample
 
 which expands to the following files:
 
@@ -202,9 +202,9 @@ that'll be something else to discover.)
 
 Next in @file{stepmake.make}:
 
-@example
+@smallexample
 include $(addprefix $(stepdir)/,$(addsuffix -vars.make, $(STEPMAKE_TEMPLATES)))
-@end example
+@end smallexample
 
 which expands to:
 
@@ -239,10 +239,10 @@ So now we're back to @file{stepmake.make}.
 
 The next lines are
 :
-@example
+@smallexample
 # ugh. need to do this because of PATH :=$(top-src-dir)/..:$(PATH)
 include $(addprefix $(depth)/make/,$(addsuffix -vars.make, $(LOCALSTEPMAKE_TEMPLATES)))
-@end example
+@end smallexample
 
 and the include expands to:
 
@@ -255,12 +255,12 @@ child @code{make} processes to use them.
 
 The final 4 lines of @file{stepmake.make} are:
 
-@example
+@smallexample
 include $(addprefix $(depth)/make/,$(addsuffix -rules.make, $(LOCALSTEPMAKE_TEMPLATES)))
 include $(addprefix $(stepdir)/,$(addsuffix -rules.make, $(STEPMAKE_TEMPLATES)))
 include $(addprefix $(depth)/make/,$(addsuffix -targets.make, $(LOCALSTEPMAKE_TEMPLATES)))
 include $(addprefix $(stepdir)/,$(addsuffix -targets.make, $(STEPMAKE_TEMPLATES)))
-@end example
+@end smallexample
 
 which expand as follows:
 
@@ -336,7 +336,7 @@ A bit more info from 27 March.  I've put some error traces into
 following lines actually cause the make to run (putting an error
 call above them - no make; below them - make):
 
-@example
+@smallexample
 ifeq ($(out),www)
 # All web targets, except info image symlinks and info docs are
 # installed in non-recursing target from TOP-SRC-DIR
@@ -344,14 +344,15 @@ install-WWW:
        -$(INSTALL) -m 755 -d $(DESTDIR)$(webdir)
        rsync -rl --exclude='*.signature' $(outdir)/offline-root $(DESTDIR)$(webdir)
        $(MAKE) -C Documentation omf-local-install
-@end example
+@end smallexample
 
 I don't currently understand the @code{ifeq}, since @code{$(out)}
 is empty at this point, but the line starting @code{-$(INSTALL)}
 translates to:
 
 @example
--/usr/bin/python /home/phil/lilypond-git/stepmake/bin/install.py -c -m 755 -d /usr/local/share/doc/lilypond/html
+-/usr/bin/python /home/phil/lilypond-git/stepmake/bin/install.py \
+  -c -m 755 -d /usr/local/share/doc/lilypond/html
 @end example
 
 End of work for Sunday 27th.
@@ -440,9 +441,9 @@ From git grep:
 
 stepmake/stepmake/generic-vars.make has this:
 
-@example
+@smallexample
 LOOP=+$(foreach i, $(SUBDIRS), $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C $(i) $@ &&) true
-@end example
+@end smallexample
 
 $@ is the name of the target - WWW-1 in this case.
 
@@ -566,26 +567,26 @@ So my assumption seems correct)
 There appear to be about 74 of them.  After all the makefile
 checking, we get this:
 
-@example
+@smallexample
 Updating goal targets....
 Considering target file `WWW-1'.
- File `WWW-1' does not exist.
-  Considering target file `local-WWW-1'.
-   File `local-WWW-1' does not exist.
-    Considering target file `out-www/collated-files.texi'.
-     File `out-www/collated-files.texi' does not exist.
-     Looking for an implicit rule for `out-www/collated-files.texi'.
-     Trying pattern rule with stem `collated-files.texi'.
-     Trying implicit prerequisite `collated-files.texi.in'.
-     Trying pattern rule with stem `collated-files.texi'.
-     Trying implicit prerequisite `collated-files.texi.in'.
-     Trying pattern rule with stem `collated-files'.
-     Trying implicit prerequisite `collated-files.tely'.
-     Trying pattern rule with stem `collated-files'.
-     Trying implicit prerequisite `out-www/collated-files.tely'.
-     Trying rule prerequisite `out-www/version.itexi'.
-     Found prerequisite `out-www/version.itexi' as VPATH `/home/phil/lilypond-git/input/regression/out-www/version.itexi'
-@end example
+File `WWW-1' does not exist.
+Considering target file `local-WWW-1'.
+File `local-WWW-1' does not exist.
+Considering target file `out-www/collated-files.texi'.
+File `out-www/collated-files.texi' does not exist.
+Looking for an implicit rule for `out-www/collated-files.texi'.
+Trying pattern rule with stem `collated-files.texi'.
+Trying implicit prerequisite `collated-files.texi.in'.
+Trying pattern rule with stem `collated-files.texi'.
+Trying implicit prerequisite `collated-files.texi.in'.
+Trying pattern rule with stem `collated-files'.
+Trying implicit prerequisite `collated-files.tely'.
+Trying pattern rule with stem `collated-files'.
+Trying implicit prerequisite `out-www/collated-files.tely'.
+Trying rule prerequisite `out-www/version.itexi'.
+Found prerequisite `out-www/version.itexi' as VPATH `/home/phil/lilypond-git/input/regression/out-www/version.itexi'
+@end smallexample
 
 grep finds this if searching for local-WWW-1:
 
@@ -607,18 +608,18 @@ In ly-rules.make we have:
 
 which I'll work out at some point, and also this rule:
 
-@example
+@smallexample
 $(outdir)/%.texi: $(outdir)/%.tely $(outdir)/version.itexi $(DOCUMENTATION_LOCALE_TARGET) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
-        LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_INCLUDES) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) $<
-@end example
+  LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_INCLUDES) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) $<
+@end smallexample
 
 Note that the recipe is a very long line - it could probably
 benefit from splitting.  The same makefile also has:
 
-@example
+@smallexample
 $(outdir)/%.texi: $(outdir)/%.tely $(outdir)/version.itexi $(DOCUMENTATION_LOCALE_TARGET) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
-        LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_INCLUDES) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) $<
-@end example
+  LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_INCLUDES) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) $<
+@end smallexample
 
 @noindent
 which seems to be an almost exact duplicate.  Whatever, the first
@@ -627,7 +628,9 @@ one is executed first.  Have not checked if the second executes.
 The first recipe translates as this:
 
 @example
-LILYPOND_VERSION=2.15.0 /usr/bin/python   --process=' ' --output=./out-www --format= --lily-output-dir /home/phil/lilypond-git/build/out/lybook-db
+LILYPOND_VERSION=2.15.0 /usr/bin/python   --process=' ' \
+  --output=./out-www --format= --lily-output-dir \
+    /home/phil/lilypond-git/build/out/lybook-db
 @end example
 
 @noindent
@@ -638,13 +641,15 @@ of other files.
 
 @example
 DOCUMENTATION_LOCALE_TARGET is blank
-INIT_LY_SOURCES = /home/phil/lilypond-git/scm/auto-beam.scm /home/phil/lilypond-git/scm/autochange.scm
+INIT_LY_SOURCES = /home/phil/lilypond-git/scm/auto-beam.scm \
+  /home/phil/lilypond-git/scm/autochange.scm
 @end example
 
 plus 10s (100s?) of other .scm files.
 
 @example
-SCHEME_SOURCES = /home/phil/lilypond-git/ly/Welcome-to-LilyPond-MacOS.ly /home/phil/lilypond-git/ly/Welcome_to_LilyPond.ly
+SCHEME_SOURCES = /home/phil/lilypond-git/ly/Welcome-to-LilyPond-MacOS.ly \
+  /home/phil/lilypond-git/ly/Welcome_to_LilyPond.ly
 @end example
 
 ditto .ly files.  This does seem a teency bit wrong - it looks like
@@ -669,10 +674,10 @@ Must remake target `out-www/collated-files.tely'
 
 @file{lysdoc-rules.make} has this:
 
-@example
+@smallexample
 $(outdir)/collated-files.tely: $(COLLATED_FILES)
-        $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" $^
-@end example
+       $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" $^
+@end smallexample
 
 @file{lysdoc-vars.make} has:
 
@@ -703,10 +708,10 @@ So the next rule in make is for @file{version.itexi}, and make duly
 checks this.  There's a rule in @file{doc-i18n-root-rules.make} that this
 depends on @file{git/VERSION}:
 
-@example
+@smallexample
 $(outdir)/version.%: $(top-src-dir)/VERSION
-        $(PYTHON) $(top-src-dir)/scripts/build/create-version-itexi.py > $@
-@end example
+       $(PYTHON) $(top-src-dir)/scripts/build/create-version-itexi.py > $@
+@end smallexample
 
 This causes create-version-itexi.py to run and create
 version.itexi.
@@ -1099,9 +1104,9 @@ The options file is @file{/Documentation/lilypond-texi2html.init}.
 This contains *lots* of option and configuration stuff, and also
 includes the line:
 
-@example
+@smallexample
 print STDERR "Initializing settings for web site: [$Texi2HTML::THISDOC@{current_lang@}]\n";
-@end example
+@end smallexample
 
 This is where one of the console messages is generated.
 
index f9234502a7043b6a936dbdc901e6cfaa5ddb26f0..3bb958d13426fd1b9b0d2d10249543eef38a04e2 100644 (file)
@@ -26,20 +26,20 @@ procedures}.
 @example
 -1- Web site
 585   web.texi
-4506  web/introduction.itexi
-1183  web/download.itexi
+4564  web/introduction.itexi
+1195  web/download.itexi
 1139  macros.itexi
 9     po/lilypond-doc.pot (translate to po/@var{MY_LANGUAGE}.po)
 0     search-box.ihtml
 ---   lilypond-texi2html.init (section TRANSLATIONS)
-7422  total
+7492  total
 
 -2- Tutorial
-1200  web/manuals.itexi
+1203  web/manuals.itexi
 124   learning.tely
 2535  learning/tutorial.itely
 4184  learning/common-notation.itely
-8043  total
+8046  total
 
 -3- Fundamental Concepts, starting of Usage and Community
 11139 learning/fundamental.itely -- Fundamental concepts
@@ -50,20 +50,20 @@ procedures}.
 17840 total
 
 -4- Rest of Learning manual and Suggestions on writing LilyPond files
-15408 learning/tweaks.itely -- Tweaking output
+15393 learning/tweaks.itely -- Tweaking output
 225   learning/templates.itely -- Templates
 2694  usage/suggestions.itely -- Suggestions on writing LilyPond files
-18327 total
+18312 total
 
 -5- Notation reference
 355   notation.tely
 91    notation/notation.itely -- Musical notation
-4479  notation/pitches.itely
+4502  notation/pitches.itely
 6048  notation/rhythms.itely
 1726  notation/expressive.itely
-930   notation/repeats.itely
-2163  notation/simultaneous.itely
-2056  notation/staff.itely
+945   notation/repeats.itely
+2216  notation/simultaneous.itely
+2345  notation/staff.itely
 931   notation/editorial.itely
 2716  notation/text.itely
 81    notation/specialist.itely -- Specialist notation
@@ -75,19 +75,19 @@ procedures}.
 66    notation/strings.itely
 242   notation/bagpipes.itely
 4752  notation/ancient.itely
-7069  notation/input.itely -- Input syntax
+7671  notation/input.itely -- Input syntax
 2164  notation/non-music.itely -- Non-musical notation
-11017 notation/spacing.itely -- Spacing issues
+11087 notation/spacing.itely -- Spacing issues
 12248 notation/changing-defaults.itely -- Changing defaults
 5187  notation/programming-interface.itely -- Interfaces for programmers
 1989  notation/notation-appendices.itely -- Notation manual tables
 252   notation/cheatsheet.itely -- Cheat sheet
-75558 total
+76610 total
 
 -6- Rest of Application Usage
-3764  usage/lilypond-book.itely -- LilyPond-book
+3952  usage/lilypond-book.itely -- LilyPond-book
 1122  usage/converters.itely -- Converting from other formats
-4886  total
+5074  total
 
 -7- Appendices whose translation is optional
 326   essay/literature.itely
index 4658c0d74d3012f23a7867e631bb8a82ac6cbd66..5d90b8430fa9f4574401f64b462bc2429070cc55 100644 (file)
@@ -2163,7 +2163,9 @@ useful) and paste with @key{C-y} or @key{C-v}.
 
 @item Update sections finished in the English documentation; check
 sections status at
+@smallexample
 @uref{http://lilypondwiki.tuxfamily.org/index.php?title=Documentation_coordination}.
+@end smallexample
 
 @item Update documentation PO.  It is recommended not to update
 strings which come from documentation that is currently deeply revised
diff --git a/Documentation/contributor/feta-font.itexi b/Documentation/contributor/feta-font.itexi
new file mode 100644 (file)
index 0000000..eb5dd12
--- /dev/null
@@ -0,0 +1,113 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Modifying the feta font
+@chapter Modifying the feta font
+
+@menu
+* Overview of the feta font::
+* Font creation tools::
+* Adding a new font section::
+* Adding a new glyph::
+* Building the changed font::
+@end menu
+
+@node Overview of the feta font
+@section Overview of the feta font
+
+The feta font is a font that was created specifically for use in
+LilyPond.  The sources for the font are found in mf/*.mf.
+
+The feta font is merged from a number of subfonts.  Each subfont
+can contain at most 224 glyphs.  This is because each subfont is
+limited to a one-byte address space (256 glyphs maximum) and we
+avoid the first 32 points in that address space, since they are
+non-printing control characters in ASCII.
+
+In LilyPond, glyphs are accessed by glyph name, rather than by code point.
+Therefore, the naming of glyphs is significant.
+
+Information about correctly creating glyphs is found in @file{mf/README}.
+Please make sure you read and understand this file.
+
+TODO -- we should get mf/README automatically generated from texinfo source
+and include it here.
+
+
+@node Font creation tools
+@section Font creation tools
+
+The sources for the feta font are written in metafont.  The definitive
+reference for metafont is "The METAFONT book".  Source for the book is
+available at CTAN.
+
+mf2pt1 is used to create type 1 fonts from the metafont sources.
+
+FontForge is used to postprocess the output of mf2pt1 and clean up
+details of the font.  It can also be used by a developer to
+display the resulting glyph shapes.
+
+@node Adding a new font section
+@section Adding a new font section
+
+The font is divided into sections, each of which contains less
+than 224 glyphs.  If more than 224 glyphs are included in a section,
+an error will be generated.
+
+Each of the sections is contained in a separate @code{.mf} file.  The
+files are named according to the type of glyphs in that section.
+
+When adding a new section, it will be necessary to add the following:
+
+@itemize
+@item
+The code for the glyphs, in a file @code{<section-name>.mf}
+@item
+Driver files used to create the font in different sizes
+@item
+An entry in the generic file used to create the font, or a new
+generic file
+@item
+If necessary, new entries in the GNUmakefile
+@item
+An entry in @file{scripts/build/gen-emmentaler-scripts.py}
+@end itemize
+
+See the examples in @code{mf/} for more information.
+
+@node Adding a new glyph
+@section Adding a new glyph
+
+Adding a new glyph is done by modifying the .mf file to which the
+glyph will be added.
+
+Necessary functions to draw the glyph can be added anywhere in the file,
+but it is standard to put them immediately before the glyph definition.
+
+The glyph definition begins with:
+
+@example
+fet_beginchar ("glyph description", "glyphname");
+@end example
+
+@noindent
+with @code{glyph description} replaced with a short description of the
+glyph, and @code{glyphname} replaced with the glyphname, which is chosen
+to comply with the naming rules in @file{mf/README}.
+
+The metafont code used to draw the glyph follows the @code{fet_beginchar}
+entry.  The glyph is finished with:
+
+@example
+fet_endchar;
+@end example
+
+@node Building the changed font
+@section Building the changed font
+
+In order to rebuild the font after making the changes, the existing
+font files must be deleted.  The simplest and quickest way to do this
+is to do:
+
+@example
+rm mf/out/*
+make
+@end example
index 61905d060af075b5da19421ff26d17ae80b3d4d1..90829b4aaf849b85911716b499232ac6f670aeb3 100644 (file)
@@ -29,8 +29,8 @@ help LilyPond.
 @section Overview of work flow
 
 @cartouche
-@strong{Ultra-short summary for Unix developers}: source code is at
-@code{git://git.sv.gnu.org/lilypond.git}.  Documentation is built
+@strong{Short summary for Unix developers}: source code is at
+@uref{git://git.sv.gnu.org/lilypond.git}.  Documentation is built
 with Texinfo, after pre-processing with @code{lilypond-book}.
 Send well-formed patches to @email{lilypond-devel@@gnu.org}.
 @end cartouche
@@ -52,7 +52,7 @@ The @q{official} LilyPond Git repository is hosted by the GNU
 Savannah software forge at @uref{http://git.sv.gnu.org}.
 Although, since Git uses a @emph{distributed} model, technically
 there is no central repository.  Instead, each contributor keeps a
-complete copy of the entire repository (about 116M).
+complete copy of the entire repository (about 116MB).
 
 Changes made within one contributor's copy of the repository can
 be shared with other contributors using @emph{patches}.  A patch
@@ -182,9 +182,33 @@ for docs and translations; code patches should almost always go to
 -devel before being pushed).
 
 @item
-Keep track of patches from your contributor.  If you've sent a
-patch to -devel, it's your responsibility to pester people to get
-comments for it, or at very least add it to the google tracker.
+Keep track of patches from your contributor.  Either upload them
+to Rietveld yourself, or help+encourage them to upload the patches
+themselves.  When a patch is on Rietveld, it's your responbility
+to get comments for it, and to add a link to the patch to the
+google tracker.  (tag it @qq{patch-new}, or @qq{patch-review} if
+you feel very confident in it)
+
+@item
+Encourage your contributor to review patches, particularly your
+own!  It doesn't matter if they're not familiar with C++ / scheme
+/ build system / doc stuff -- simply going through the process is
+valuable.  Besides, anybody can find a typo!
+
+@item
+Contact your contributor at least once a week.  The goal is just
+to get a conversation started -- there's nothing wrong with simply
+copy&pasting this into an email:
+
+@example
+Hey there,
+
+How are things going?  If you sent a patch and got a review, do
+you know what you need to fix?  If you sent a patch but have no
+reviews yet, do you know when you will get reviews?  If you are
+working on a patch, what step(s) are you working on?
+@end example
+
 
 @end enumerate
 
index 54d57e62d29e3c9d4919f4dd2721fac41a3d7f5a..56b97d38be4e6dc50a00250631adea3f90827110 100644 (file)
@@ -78,8 +78,8 @@ Sign in to google code by clicking in the top-right corner of:
 @uref{http://code.google.com/p/lilypond/issues/list}
 @end example
 
-You cannot log if you have Google Sharing
-@uref{http://www.googlesharing.net/} enabled.
+You cannot log on if you have Google Sharing enabled
+@uref{http://www.googlesharing.net/}.
 
 @item
 Go to your @qq{Profile}, and select @qq{Settings}.
@@ -137,7 +137,7 @@ should go into a separate @code{bug-current} folder.
 @section Bug Squad checklists
 
 When you do Bug Squad work, start at the top of this page and work
-your way down.  Stop when you've done 15 minutes.
+your way down.  Stop when you've done 20 minutes.
 
 Please use the email sorting described in @ref{Bug Squad setup}.
 This means that (as Bug Squad members) you will only ever respond
@@ -147,7 +147,7 @@ to emails sent or CC'd to the @code{bug-lilypond} mailing list.
 @subsubheading Emails to you personally
 
 You are not expected to work on Bug Squad matters outside of your
-15 minutes, but sometimes a confused user will send a bug report
+20 minutes, but sometimes a confused user will send a bug report
 (or an update to a report) to you personally.  If that happens,
 please forward such emails to the @code{bug-lilypond} list so that
 the currently-active Bug Squad member(s) can handle the message.
@@ -155,16 +155,16 @@ the currently-active Bug Squad member(s) can handle the message.
 
 @subsubheading Daily schedule
 
-The Bug Meister is omitted from the daily schedule.
+@c spacing is deliberate to help reinforce the "cyclic" nature
 
 @example
-Sunday: Colin
-Monday: Dmytro
-Tuesday: James Bailey
-Wednesday: Ralph
-Thursday: Patrick
-Friday: Urs
-Saturday: Kieren
+Monday:    Dmytro
+Tuesday:    Colin
+Wednesday:   Derek
+Thursday:  Dmytro
+Friday:     Colin
+Saturday:    Derek
+Sunday:       Phil
 @end example
 
 
@@ -681,6 +681,15 @@ If the issue requires one or two pages of output, then generate a
 lilypond --png bug.ly
 @end example
 
+@item
+Images created as @file{bug.png} may be trimmed to a minimum size
+by using the @code{trimtagline.sh} script, which can be found at
+@uref{https://raw.github.com/gperciva/lilypond-extra/master/bug-squad/trimtagline.sh}
+
+@example
+trimtagline.sh bug.ly
+@end example
+
 @item
 If the issue cannot be shown with less than three pages, then
 generate a @file{bug.pdf} file with:
@@ -836,17 +845,17 @@ weeks.
 
 Grid view provides the best overview:
 
-@example
+@smallexample
 @uref{http://code.google.com/p/lilypond/issues/list?mode=grid&y=Priority&x=Type&cells=ids}
-@end example
+@end smallexample
 
 @subsubheading Hindering development
 
 These issues stop or slow development work:
 
-@example
-@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Maintainability&mode=grid&y=Priority&x=Type&cells=ids}
-@end example
+@smallexample
+@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Maintainability}
+@end smallexample
 
 @subsubheading Easy tasks
 
@@ -856,9 +865,9 @@ relatively new contributor.  The time given is a quick
 familiar with material in this manual, but does not know anything
 else about LilyPond development.
 
-@example
-@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Frog&mode=grid&y=Priority&x=Type&cells=ids}
-@end example
+@smallexample
+@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Frog}
+@end smallexample
 
 @subsubheading Patches to review
 
index 27349b3625c4092a65ffeae9150b4ae1d877ad90..647c8afc0a73cef13c2e612f8377f15bddfa05ec 100644 (file)
@@ -94,7 +94,7 @@ This code demonstrates ...
 @}
 @end example
 
-\noindent
+@noindent
 and name the file @file{snippet-title.ly}.
 
 
@@ -148,11 +148,11 @@ master branch, or even better a fresh snapshot from Git master branch.
 @item
 From the top source directory, run:
 
-@example
+@smallexample
 wget http://lsr.dsi.unimi.it/download/lsr-snippets-docs-@var{YYYY-MM-DD}.tar.gz
 tar -xzf lsr-snippets-docs-@var{YYYY-MM-DD}.tar.gz
 scripts/auxiliar/makelsr.py lsr-snippets-docs-@var{YYYY-MM-DD}
-@end example
+@end smallexample
 
 @noindent
 where @var{YYYY-MM-DD} is the current date, e.g. 2009-02-28.
@@ -298,7 +298,7 @@ Here is a shell script to run all @file{.ly} files in a directory
 and redirect terminal output to text files, which are then
 searched for the word "failed" to see which snippets do not compile.
 
-@example
+@smallexample
 #!/bin/bash
 
 for LILYFILE in *.ly
@@ -309,4 +309,4 @@ do
 done
 
 grep failed *.txt
-@end example
+@end smallexample
index 6f3bbb824a6b4e505b57d51d1dea693069b55d21..7eb43e32a56c6cfb299e7e9f8d09524d4dcd23d6 100644 (file)
@@ -318,77 +318,61 @@ The class Class_name is coded in @q{class-name.*}
 @node Indentation
 @subsection Indentation
 
-Standard GNU coding style is used.  In emacs:
+Standard GNU coding style is used.
 
-@verbatim
-             (add-hook 'c++-mode-hook
-                  '(lambda() (c-set-style "gnu")
-                     ))
-@end verbatim
-
-If you like using font-lock, you can also add this to your
-@q{.emacs}:
+@subsubheading Indenting files with @code{fixcc.py} (recommended)
 
-@verbatim
-             (setq font-lock-maximum-decoration t)
-             (setq c++-font-lock-keywords-3
-                   (append
-                    c++-font-lock-keywords-3
-                    '(("\\b\\(a-zA-Z_?+_\\)\\b" 1 font-lock-variable-name-face) ("\\b\\(A-Z?+a-z_?+\\)\\b" 1 font-lock-type-face))
-                    ))
-@end verbatim
-
-Some source files may not currently have proper indenting.  If this
-is the case, it is desirable to fix the improper indenting when the
-file is modified, with the hope of continually improving the code.
-
-
-@subheading Indenting files with fixcc.py
-
-LilyPond provides a python script that will correct the indentation
-on a c++ file:
+LilyPond provides a python script that will adjust the indentation
+and spacing on a @code{.cc} or @code{.hh} file to very near the
+GNU standard:
 
 @example
-scripts/auxiliar/fixcc.py lily/my-test-file.cc
+scripts/auxiliar/fixcc.py FILENAME
 @end example
 
-Be sure you replace @file{my-test-file.cc} with the name of the file
-that you edited.
-
-If you are editing a file that contains an ADD_TRANSLATOR or ADD_INTERFACE
-macro, the fixcc.py script will move the final parenthesis up one line
-from where it should be.  Please check the end of the file before
-you run fixcc.py, and then put the final parenthesis and semicolon
-back on a line by themselves.
+This can be run on all files at once, but this is not recommended
+for normal contributors or developers.
 
+@smallexample
+scripts/auxiliar/fixcc.py \
+  fixcc $(find flower lily -name '*cc' -o -name '*hh' | grep -v /out)
+@end smallexample
 
-@subheading Indenting files with emacs in script mode
 
-@c email to wl@gnu.org when I get here.
+@subsubheading Indenting with emacs
 
-@warning{this is pending some confirmation on -devel.  July 2009 -gp}
-
-Command-line script to format stuff with emacs:
+The following hooks will produce indentation which is similar to
+our official indentation as produced with @code{fixcc.py}.
 
 @example
-#!/bin/sh
-emacs $1 -batch --eval '(indent-region (point-min) (point-max) nil)' -f save-buffer
+(add-hook 'c++-mode-hook
+     '(lambda ()
+        (c-set-style "gnu")
+        (setq indent-tabs-mode nil))
 @end example
 
-(that's all on one line)
+If you like using font-lock, you can also add this to your
+@file{.emacs}:
 
-Save it as a shell script, then run on the file(s) you modified.
+@example
+(setq font-lock-maximum-decoration t)
+(setq c++-font-lock-keywords-3
+      (append
+       c++-font-lock-keywords-3
+       '(("\\b\\(a-zA-Z_?+_\\)\\b" 1 font-lock-variable-name-face) ("\\b\\(A-Z?+a-z_?+\\)\\b" 1 font-lock-type-face))
+       ))
+@end example 
 
 
 @subheading Indenting with vim
 
-Although emacs indentation is the LilyPond standard, acceptable
+Although emacs indentation is the GNU standard, acceptable
 indentation can usually be accomplished with vim.  Some hints for
 vim are as follows:
 
 A workable .vimrc:
 
-@verbatim
+@example
 set cindent
 set smartindent
 set autoindent
@@ -400,22 +384,22 @@ set incsearch
 set ignorecase smartcase
 set hlsearch
 set confirm
-set statusline=%F%m%r%h%w\ %{&ff}\ %Y\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ %04l,%04v\ %p%%\ [LEN=%L]
+set statusline=%F%m%r%h%w\ %@{&ff@}\ %Y\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ %04l,%04v\ %p%%\ [LEN=%L]
 set laststatus=2
 set number
 " Remove trailing whitespace on write
 autocmd BufWritePre * :%s/\s\+$//e
-@end verbatim
+@end example
 
-With this .vimrc, files can be reindented automatically by highlighting
-the lines to be indented in visual mode (use V to enter visual mode)
-and pressing =.
+With this @file{.vimrc}, files can be reindented automatically by
+highlighting the lines to be indented in visual mode (use V to
+enter visual mode) and pressing @code{=}.
 
-A scheme.vim file will help improve the indentation.  This one
-was suggested by Patrick McCarty.  It should be saved in
-~/.vim/after/syntax/scheme.vim.
+A @file{scheme.vim} file will help improve the indentation.  This
+one was suggested by Patrick McCarty.  It should be saved in
+@file{~/.vim/after/syntax/scheme.vim}.
 
-@verbatim
+@example
 " Additional Guile-specific 'forms'
 syn keyword schemeSyntax define-public define*-public
 syn keyword schemeSyntax define* lambda* let-keywords*
@@ -446,7 +430,7 @@ set lw-=set!
 
 " Try to highlight all ly: procedures
 syn match schemeFunc "ly:[^) ]\+"
-@end verbatim
+@end example
 
 
 @node Naming conventions
index e56eab872219a4d8d2d66461b1178fba662e197f..d12ff3578d649c0606e0d74cca5764098a483e1b 100644 (file)
@@ -448,6 +448,7 @@ will likely take 2 to 10 hours.
 
 @example
 cd ~/lilypond-git/build/
+make
 make doc
 @end example
 
index 3ec39d49cf201b83e7beaaa516a7e4bff66bf28d..7f4c9276169c22f9f52462b9fa95ee595df245c1 100644 (file)
@@ -188,8 +188,11 @@ twice.
 @enumerate
 
 @item
-Before making changes, a baseline should be established by
-running:
+Run @code{make} with current git master without any of your changes.
+
+@item
+Before making changes to the code, establish a baseline for the comparison by
+going to the @file{lilypond-git/build/} directory and running:
 
 @example
 make test-baseline
@@ -209,7 +212,7 @@ make check
 @end example
 
 After this has finished, a regression test comparison will be
-available at:
+available (relative to the current @file{build/} directory) at:
 
 @example
 out/test-results/index.html
@@ -264,6 +267,15 @@ automatic regression comparison again.
 
 @end enumerate
 
+@advanced{
+Once a test baseline has been established, there is no need to run it again
+unless git master changed. In other words, if you work with several branches
+and want to do regtests comparison for all of them, you can
+@code{make test-baseline} with git master, checkout some branch,
+@code{make} and @code{make check} it, then switch to another branch,
+@code{make test-clean}, @code{make} and @code{make check} it without doing
+@code{make test-baseline} again.}
+
 
 @node Finding the cause of a regression
 @section Finding the cause of a regression
@@ -418,7 +430,9 @@ code has been exercised by the tests.
 
 For tracking memory usage as part of this test, you will need
 GUILE CVS; especially the following patch:
+@smallexample
 @uref{http://www.lilypond.org/vc/old/gub.darcs/patches/guile-1.9-gcstats.patch}.
+@end smallexample
 
 @subheading Code coverage
 
index 92cd87ab673cf0dfd4165401cc532cc124b86290..ad6daf63404355e7328fec3f68b795c7a69a1c03 100644 (file)
@@ -95,6 +95,27 @@ git push origin
 If you do not have the previous release test-output tarball, download
 it and put it in @code{regtests/}
 
+@item Prepare GUB environment by running:
+
+@example
+### my-gub.sh
+# special terminal, and default PATH environment.
+# import these special environment vars:
+#   HOME, HTTP_PROXY, TERM
+env -i \
+  HOME=$HOME \
+  HTTP_PROXY=$HTTP_PROXY \
+  bash --rcfile my-bashrc
+@end example
+
+@example
+### my-bashrc
+export PS1="\[\e[1;33mGUB-ENV \w\]$ \[\e[0m\]"
+export PATH=$PATH
+export TERM=xterm
+@end example
+
+
 @item Build release on GUB by running:
 
 @example
@@ -273,7 +294,29 @@ various websites, so be brief.
 Run convert-ly on all files, bump parser minimum version.
 
 @item
-Make FTP directories on lilypond.org
+Make directories on lilypond.org:
+
+@example
+~/web/download/sources/v2.14
+~/web/download/sources/v2.15
+@end example
+
+@item
+Shortly after the release, move all current contributors to
+previous contributors in:
+
+@example
+Documentation/included/authors.itexi
+@end example
+
+Also, delete old material in:
+
+@example
+Documentation/changes.tely
+@end example
+
+but don't forget to check it still compiles!  also update the
+version numbers.
 
 @item
 Website:
@@ -448,7 +491,8 @@ build the specific package(s) you want, i.e.
 @example
 bin/gub mingw::lilypond-installer
 make LILYPOND_BRANCH=stable/2.12 -f lilypond.make doc
-bin/gub --platform=darwin-x86 'git://git.sv.gnu.org/lilypond-doc.git?branch=stable/2.12'
+bin/gub --platform=darwin-x86 \
+  'git://git.sv.gnu.org/lilypond-doc.git?branch=stable/2.12'
 @end example
 
 or
index ba1875c0d670392e71c52b1269a6eedc5f3b3e0b..fee5e367174e235ebe08e5c1b3e2406bb3e773fc 100644 (file)
@@ -65,9 +65,9 @@ Download the @command{lily-git.tcl} script from:
 @c don't change the cgit link below to gitweb; gitweb uses
 @c long filenames like "scripts_auxiliar_lily-git.tcl"
 
-@example
+@smallexample
 @uref{http://git.sv.gnu.org/cgit/lilypond.git/plain/scripts/auxiliar/lily-git.tcl}
-@end example
+@end smallexample
 
 @item
 To run the program from the command line, navigate to the
index bb8c19fe949fc7d4bc8c4e529eea521b5c553105..c356e1146bd5be4aa5918507cdcae1ffc83ee5b2 100644 (file)
@@ -124,7 +124,7 @@ git merge origin/master
 @end verbatim
 
 Check for any updates to trusted scripts / files:
-
+@smallexample
 @verbatim
 ### check-git.sh
 #!/bin/sh
@@ -160,6 +160,7 @@ cp $GIT/scripts/build/bib2texi.py $DEST/bib2texi.py
 cp $GIT/Documentation/web/server/lilypond.org.htaccess $DEST/lilypond.org.htaccess
 cp $GIT/Documentation/web/server/website-dir.htaccess $DEST/website-dir.htaccess
 @end verbatim
+@end smallexample
 
 Build the website:
 
index d9f008b94710887868c01d44e91a5ac7bda91c1c..572897f373d8110694fb382c3b3b492a0350985a 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Naposledy obnoveno Thu Mar 24 14:52:33 UTC 2011
+@emph{Naposledy obnoveno Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -165,7 +165,7 @@ ano
 @item
 4 Ladění výstupu
 @*
-15408
+15393
 @tab Pavel Fric
 @tab 
 @tab 
@@ -285,7 +285,7 @@ ano
 @item
 Úvod
 @*
-4506
+4564
 @tab Pavel Fric
 @tab 
 @tab 
@@ -302,7 +302,7 @@ ano
 @ifhtml
 
 @html
-<span style="background-color: #47ff24">částečně</span>
+<span style="background-color: #4efe25">částečně</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -312,7 +312,7 @@ ano
 @item
 Stažení
 @*
-1183
+1195
 @tab Pavel Fric
 @tab 
 @tab 
@@ -329,7 +329,7 @@ ano
 @ifhtml
 
 @html
-<span style="background-color: #40fe23">částečně</span>
+<span style="background-color: #4efe25">částečně</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -339,7 +339,7 @@ ano
 @item
 Příručky
 @*
-1200
+1203
 @tab Pavel Fric
 @tab 
 @tab 
@@ -356,11 +356,11 @@ ano
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ano</span>
+<span style="background-color: #25fe1f">částečně</span>
 @end html
 @end ifhtml
 @ifnothtml
-ano
+částečně
 @end ifnothtml
 @tab před-GDP
 @item
index ed71c06c677ce18ec71843ea1dced34feaba94ad..d51f9e5c1b69d03adc6a82d3b6d7c8fddb29427d 100755 (executable)
@@ -503,7 +503,7 @@ nějak tak:
 [@var{přednastavená cesta - PATH}];@var{ADR}\LilyPond\usr\bin
 @end example
 
-@warning{@var{ADR} je obvykle @code{C:\Program Files}.}
+@warning{@var{ADR} je obvykle @code{C:@bs{}Program Files}.}
 
 @noindent
 a klepněte na @qq{OK} pro uzavření okna.
index a6f6f9b669fa127dd8d6db336924d6f18a6c35fd..e5bf19280dd47d3533d0566051b95ebfe9b11206 100644 (file)
@@ -894,6 +894,7 @@ div.color4 h3 {
 .example {
   position: relative;
   left: -2.5em;
+  text-align: left;
 }
 
 .h-scroll-auto {
index d4345454180033e4b2a79985825f0d2ceee80b24..82617cdc61c104d4c453486f77b54b029672a3f1 100644 (file)
@@ -81,7 +81,6 @@ finden sich Kopien dieser und anderer Dokumentationsdateien.
 * Übliche Notation::        Die häufigsten Notationsfälle.              
 * Grundbegriffe::           Grundlegende Konzepte, die benötigt werden, um den Rest dieses Handbuchs zu lesen.
 * Die Ausgabe verändern::                Einleitung in die Beeinflussung des Notenbilds.
-* An LilyPond-Projekten arbeiten::   Benutzung des Programms im wirklichen Leben.
 
 
 Anhänge
index 607017d354124a40b0dad3688bbdeb82b0b231f8..949346eb6dfba3b83e7745d9a0ad928b9322d494 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Zuletzt aktualisiert am Thu Mar 24 14:52:33 UTC 2011
+@emph{Zuletzt aktualisiert am Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -84,7 +84,7 @@ ja
 @item
 1 Notensatz
 @*
-5297
+5296
 @tab  Till Paala
 @tab 
 @tab 
@@ -409,7 +409,7 @@ ja
 @item
 4 Die Ausgabe verändern
 @*
-15408
+15393
 @tab Till Paala
 @tab 
 @tab 
@@ -546,17 +546,17 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #25fe1f">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @item
 1.1 Tonhöhen
 @*
-4479
+4502
 @tab Till Paala
 @tab 
 @tab 
@@ -573,11 +573,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #40fe23">teilweise</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-teilweise
+ja
 @end ifnothtml
 @tab vor-GDP
 @item
@@ -600,11 +600,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #33ff21">teilweise</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-teilweise
+ja
 @end ifnothtml
 @tab vor-GDP
 @item
@@ -637,7 +637,7 @@ ja
 @item
 1.4 Wiederholungszeichen
 @*
-930
+945
 @tab Till Paala
 @tab 
 @tab 
@@ -664,7 +664,7 @@ ja
 @item
 1.5 Gleichzeitig erscheinende Noten
 @*
-2163
+2216
 @tab Till Paala
 @tab 
 @tab 
@@ -681,7 +681,7 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #33ff21">teilweise</span>
+<span style="background-color: #83fe2c">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -691,7 +691,7 @@ teilweise
 @item
 1.6 Notation auf Systemen
 @*
-2056
+2345
 @tab Till Paala
 @tab 
 @tab 
@@ -708,11 +708,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #9eff30">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @item
@@ -735,11 +735,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">teilweise</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-teilweise
+ja
 @end ifnothtml
 @tab vor-GDP
 @item
@@ -789,11 +789,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #25fe1f">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @item
@@ -826,7 +826,7 @@ ja
 @item
 2.2 Tasteninstrumente und andere Instrumente mit mehreren Systemen
 @*
-838
+864
 @tab  Till Paala
 @tab 
 @tab 
@@ -880,7 +880,7 @@ ja
 @item
 2.4 Saiteninstrumente mit Bünden
 @*
-2640
+2649
 @tab Till Paala
 @tab 
 @tab 
@@ -1069,34 +1069,34 @@ ja
 @item
 3 Allgemeine Eingabe und Ausgabe
 @*
-7069
+7671
 @tab Till Paala
 @tab 
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #dfef77">teilweise (90 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise (90 %)
 @end ifnothtml
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #83fe2c">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @item
 4 Abstände
 @*
-11017
+11087
 @tab Till Paala
 @tab 
 @tab 
@@ -1326,7 +1326,7 @@ ja
 @item
 3 @command{lilypond-book} aufrufen
 @*
-3764
+3952
 @tab Reinhold Kainhofer
 @tab Till Paala
 @tab 
@@ -1475,7 +1475,7 @@ ja
 @item
 Einleitung
 @*
-4506
+4564
 @tab Till Paala
 @tab 
 @tab 
@@ -1502,7 +1502,7 @@ ja
 @item
 Download
 @*
-1183
+1195
 @tab Till Paala
 @tab 
 @tab 
@@ -1519,17 +1519,17 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #25fe1f">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @item
 Handbücher
 @*
-1200
+1203
 @tab Till Paala
 @tab 
 @tab 
index 11e123dfb0b33659a5065935e21eb5f3f6541c58..f7a4df4018e0275c03e4e8d06d13098e2c750371 100644 (file)
@@ -223,7 +223,7 @@ Selbstverständlich sind Patches von Ihnen sehr willkommen!
 
 @menu
 * midi2ly aufrufen::          Import von MIDI.
-* muscxml2ly aufrufen::       Import von MusicXML.
+* musicxml2ly aufrufen::       Import von MusicXML.
 * abc2ly aufrufen::           Import von ABC.
 * etf2ly aufrufen::           Import von (alten) Finale-Dateien.
 * Andere Formate::
@@ -324,8 +324,8 @@ Tonlänge setzen und Phrasierungszeichen oder Pedalindikatoren
 hinzufügen.
 
 
-@node muscxml2ly aufrufen
-@subsection @command{muscxml2ly} aufrufen
+@node musicxml2ly aufrufen
+@subsection @command{musicxml2ly} aufrufen
 @translationof Invoking musicxml2ly
 
 @cindex MusicXML
index e173b8bb4c3e5471dfaede8c8e3fc9f35e55d0b7..fc4608f052dc5d3157e727f9151a320e7a6b15f0 100644 (file)
@@ -157,15 +157,15 @@ Lesen Sie mehr in der @ref{Einleitung}!
 
 @subsubheading Stabile Version
 
-@ref{Download, Download @versionStable}
+@ref{Download, @versionStable herunterladen}
 
-@ref{Manuals, Manuals @versionStable}
+@ref{Handbücher, @versionStable Handbücher}
 
 @subsubheading Entwicklerversion
 
-@ref{Development, Download @versionDevel}
+@ref{Entwicklung, @versionDevel herunterladen}
 
-@ref{Development, Manuals @versionDevel}
+@ref{Entwicklung, @versionDevel Handbücher}
 
 @divEnd
 @end ifset
index 8893fe7073de4adba5f4446e45b629b1bcf1d9ef..f2d1980f208123fe9e36f6d29dd000c4b2fe12d1 100644 (file)
@@ -508,7 +508,7 @@ hinzu, ewta so:
 [@var{voreingestellter PATH}];@var{VERZ}\LilyPond\usr\bin
 @end example
 
-@warning{@var{VERZ} ist üblicherweise @code{C:\Program Files}.}
+@warning{@var{VERZ} ist üblicherweise @code{C:@bs{}Program Files}.}
 
 @noindent
 und klicken Sie auf @qq{OK} um das Fenster zu schließen.
index 2a5c7ac40a577e70caae6b795a467b99db79fd74..53b1344c23e59921133a0e021d6749557dc09c2b 100644 (file)
@@ -18,7 +18,7 @@
 
 @imageFloat{flat-design,png,right}
 
-LilyPond entstand, als zwei Musiker über das tote und unbeseelte Aussehen von computererstellten Notendrucken hinausgehen wollten.  Alle Musiker wollen schöne Noten lesen, warum also sollten Programmierer kein Programm schreiben können, dass schönere Orchesterstimmen setzen kann?
+LilyPond entstand, als zwei Musiker über das tote und unbeseelte Aussehen von computererstellten Notendrucken hinausgehen wollten.  Alle Musiker wollen schöne Noten lesen, warum also sollten Programmierer kein Programm schreiben können, das schönere Orchesterstimmen setzen kann?
 
 Das Resultat ist ein System, welches Musiker von den Details des
 Notensatzlayouts befreit, sodass sie sich darauf konzentrieren
index 782f28b70d642cfad3a5234cddf8fa6a6b0c6562..1bef25084be98eaec42ae5bb2df6200506cb512f 100644 (file)
@@ -446,9 +446,9 @@ Eigenschaften in LilyPond seit der vorigen stabilen Version.
 
 @docLinks{Änderungen, changes,
   @rchangesnamed{Top,Änderungen},
-  @manualStableChangesSplit-de,
-  @manualStableChangesBig-de, 6 KB,
-  @manualStableChangesPdf-de, 200 KB}
+  @manualStableChangesSplit,
+  @manualStableChangesBig, 6 KB,
+  @manualStableChangesPdf, 200 KB}
 
 @divEnd
 
index c1e256715bb9b7af6f2a6ad0d98f9206a6421ffe..54197f95ddb367cadfe6f6bff186530e9ab9a588 100644 (file)
@@ -4,7 +4,6 @@ SUBDIRS = essay learning notation texidocs usage web extending included
 STEPMAKE_TEMPLATES = documentation
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
 
-UNSPLITTED_HTML_MANUALS = changes
 
 EXTRA_DIST_FILES = web.texi
 
index 0e2af31b1e2bc5d12b46ad5d1216ea29a9601e05..dc9f5681d69d63d3f4e9c103b016ec6b2b31fe7d 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 7ad21bc1c7d8407e8f21088415c1ad117e84fd9d
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index fbb65cc19ca2be05e1d1887330105721b87afd32..486c349affc9c54257e0874ec442612613473b50 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: cfc6e57ef66601ecca367654f69ee8c27001c573
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index a1f552d15fd4d218884563c124e83c626ca1a17c..7a5ef591670c6427da9cdce3363caf51cd809510 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of extending.tely
 @ignore
-    Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index c7d53baaf63051ff0c263f5e69a9b3c7e7b99977..c804ce420cbbde65e29006859306036904aa4557 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 527bcb0a3db502be9fc42d25f6c8a2198ccfd771..ec01006f260efc84de9bb5016836658eeb21d3c7 100644 (file)
@@ -3,7 +3,7 @@
 @c learning/tutorial.itely
 
 @ignore
-    Translation of GIT committish: fe2cae0fa47ec4ec0184e6b3d15572fbcba881cf
+    Translation of GIT committish: 8f02aa6516b3cfe16b2c145142ea652cbc3b8970
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -201,7 +201,7 @@ Haga un archivo de texto con el nombre
 
 @c double \\ required because this is inside a macro!
 @example
-\\version "@w{@version{}}"
+\\version "@w{@versionStable{}}"
 @{
   c' e' g' e'
 @}
@@ -221,7 +221,7 @@ lilypond prueba.ly
 Verá algo parecido a:
 
 @example
-GNU LilyPond @version{}
+GNU LilyPond @w{@versionStable{}}
 Procesando `prueba.ly'
 Analizando...
 Interpretando la música...
index 3a310e766934ef1c695f202dd151e40fb2849304..7a862fdaeb7f31814b2064834fae0d74a8e1ba79 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 463240fdfd30e9bd60238b246114e5d27319d6d5
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index e833266b332edd0201d3ad3b2f2efc91c870601e..594e9f8575b7b92a937fd48177be4598a38ee10d 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 398e5e95c6cd11f2ef03a5ceed087d87ad28f1e1
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 5bab74213b81e185ed87a2a2a226923a768e962f..46aa229627545006694fea996c3c5410c9d21127 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index c4c27c15602a97e7aebe616c9f3bf9043bdd4927..2986e4e9f2cb51d0e2c5c6ca8e1049f839ab2b93 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 41aa8556888dae8eed5b9e9a3fff8d6e05b9855a..ecde18ec1a4dfa8846c563e76fc33b2103c023a6 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 710766640089507a2406727425e2a3cc1046fcee..8e91c177a0083e4c096899c2b4454ed90821b52b 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 7130696ee590df198a4dc039423dcc1d36512fd9
+    Translation of GIT committish: cf4e2cb33bbcc867d74cd40b2efe28c961ca4a60
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -2927,42 +2927,55 @@ r4
 \acciaccatura e8\( d8 c~ c d c d\)
 @end lilypond
 
-Presentamos un ejemplo más extraído del comienzo del pentagrama de la
-mano izquierda del preludio de Chopin Op 28 No. 2.  vemos que la barra
-choca con las notas superiores:
+Presentamos otro ejemplo.  Vemos que la barra
+choca con las ligaduras:
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
+  \time 4/2
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
 }
 @end lilypond
 
 @noindent
 Esto se puede resolver manualmente elevando los dos extremos de la
-barra desde su posición a dos espacios de pentagrama sobre la línea
-central hasta, digamos, 3 espacios:
+barra desde su posición a 1.81 espacios de pentagrama bajo la línea
+central hasta, digamos, 1 espacio:
 
 @cindex Beam, ejemplo de sobreescritura
 @cindex positions, propiedad, ejemplo
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
+  \time 4/2
   <<
-    \override Beam #'positions = #'(3 . 3)
-    { b,8 ais, b, g, }
-  \\
-    { e,8 g e, g }
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    {
+      \override Beam #'positions = #'(-1 . -1)
+      e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g''
+    }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
 }
 @end lilypond
 
 @noindent
 Observe que la sobreescritura sigue aplicándose en la primera voz del
-segundo bloque de corcheas, pero no a ninguna de las barras de la
+segundo compás de corcheas, pero no a ninguna de las barras de la
 segunda voz.
 
 @subheading la propiedad force-hshift (forzar desplazamiento horizontal)
index 3ddce36305b79e1383b5d38a2c4a560100e7f1bd..822f1ae16b8d48bb4c8aa80331bdee60ef4f5e96 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c vim: foldmethod=marker
 @ignore
-    Translation of GIT committish: 274c916b48393e0f866cbab68c18a505f6fc7ea3
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 3151ad09349fd6c52706fecc2d9ac88e334bab5a..67a33d6518b677e89523e6959e2390bd0ce0bc9f 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-Translation of GIT committish: 274c916b48393e0f866cbab68c18a505f6fc7ea3
+Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 6875aa934cecaf779a12801ba9dfd3e7cde1d8b1..c0096a449e2bd2030ab92269c3767b0b91f3ffa1 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 345522f312430725cdae0d61acfa716ce08622ca
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index aa0a57d0b0e01871f56579e968b9fc8213eb21c2..a1c401f67a9f8ec0c5343d42bab27421791f16d3 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 9a40bd63b77375ac7ac1085d7eda9f5680bf06dd
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 5696520ebb5f1fc36ad0e9ec095d37ac26e2b670..3891d237e13504e185f9b0e21616db578a30ed33 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: de924bddd22886a0a67decbde45acd5da441bf6d
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index b7a01feffa913a062651a04698f1befcbe2c30bc..f691ffb3be34881ba8c7a5395ee34cf4d1b83f6c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is included from notation.itely
 @ignore
-    Translation of GIT committish: f93bc90b3ee5e5de96b59c8e81b4ea354d5b1927
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index b9a8c47ed8068b3239962e4ca5cbab2639cd3a78..4e36ff1a656a4cef34a8acba1f7b85946a0a5b8d 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 33903a90b916b4c42d767aa0feb800de1c3d8dbe
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 5a0d45a48056f1c45d9305704a8b692760cebd7a..129b0be8d74c0e07a17821813a6e23598221a96a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 5becf12f5ada67346f70ad8cfe68589466619305
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -467,7 +467,7 @@ ratioHarmonics = {
 @seealso
 Referencia de la notación:
 @ref{Plicas},
-@ref{Armónicods},
+@ref{Armónicos},
 @ref{Glissando}.
 
 Fragmentos de código:
index e5cfb0abd6abee7acd60ed65f320bea7a5022b23..e1b05d81035737696654c4b8d22f23aed677edd0 100644 (file)
@@ -1,7 +1,7 @@
-u@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 9f651e1f5143787aeda825a4061f82eede4943a3
+    Translation of GIT committish: ba10db0a4ffe50a260d76179b77c396034434ce4
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -23,6 +23,7 @@ generales de LilyPond, más que con la notación específica.
 * Trabajar sobre los archivos de entrada::
 * Controlar la salida::
 * Salida MIDI::
+* Extraer información musical::
 @end menu
 
 
@@ -536,323 +537,540 @@ Casi toda la música impresa tiene un título y el nombre del
 compositor; ciertas piezas tienen mucha más información.
 
 @menu
-* Crear títulos::
-* Encabezamientos pies y títulos personalizados::
-* Referencias a números de página::
+* Crear títulos cabeceras y pies de página::
+* Cabeceras pies y títulos personalizados::
+* Referencia a números de página::
 * Índice general::
 @end menu
 
 
-@node Crear títulos
-@subsection Crear títulos
-@translationof Creating titles
+@node Crear títulos cabeceras y pies de página
+@subsection Crear títulos, cabeceras y pies de página
+@translationof Creating titles headers and footers
 
-Se crean títulos para cada uno de los bloques @code{\score} así como
-para todo el archivo de entrada (o bloque @code{\book}, libro) y las
-partes de libro (creadas mediante bloques @code{\bookpart}).
+@menu
+* Explicación de los bloques de títulos::
+* Presentación predeterminada de los bloques de título del libro y la partitura::
+* Disposición predeterminada de las cabeceras y pies de página::
+@end menu
 
-El contenido de cada título se extrae a partir de los bloques
-@code{\header} (cabecera).  El bloque de cabecera de un libro
-contempla lo siguiente:
 
-@table @code
-@funindex dedicatoria
-@item dedication
-El dedicatario de la música, centrado en lo alto de la primera página.
+@node Explicación de los bloques de títulos
+@unnumberedsubsubsec Explicación de los bloques de títulos
+@translationof Title blocks explained
 
-@funindex title
-@item title
-El título de la música, centrado justo debajo de la
-dedicatoria.
+@c TODO: figure out how \bookpart titles work
 
-@funindex subtitle
-@item subtitle
-Subtítulo, centrado debajo del título.
+Existen dos clases de bloques de títulos: el bloque principal de
+títulos que aparece encima del primer bloque @code{\score} de un
+libro, y los bloques individuales de título que aparecen dentro de
+cada bloque @code{\score}.  Los campos de texto para los dos tipos de
+bloque se introducen mediante un bloque @code{\header}.
 
-@funindex subsubtitle
-@item subsubtitle
-Sub-subtítulo, centrado debajo del subtítulo.
+Si el libro tiene una única partitura, el bloque @code{\header} se
+puede situar dentro o fuera del bloque @code{\score}.
 
-@funindex poet
-@item poet
-Nombre del poeta, a la izquierda, debajo del subtítulo.
+@warning{Recuerde que al añadir un bloque @bs{}@code{header} dentro de
+un bloque @bs{}@code{score}, la expresión musical debe aparecer antes
+del bloque @bs{}@code{header}.}
 
-@funindex composer
-@item composer
-Nombre del compositor, a la derecha, debajo del subtítulo.
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\header {
+  title = "SUITE I."
+  composer = "J. S. Bach."
+}
 
-@funindex meter
-@item meter
-Texto de la medida, a la izquierda, debajo del poeta.
+\score {
+  \new Staff \relative g, {
+    \clef bass
+    \key g \major
+    \repeat unfold 2 { g16( d' b') a b d, b' d, } |
+    \repeat unfold 2 { g,16( e' c') b c e, c' e, } |
+  }
+  \header {
+    piece = "Prélude."
+  }
+}
 
-@funindex opus
-@item opus
-Nombre del Opus, a la derecha, debajo del compositor.
+\score {
+  \new Staff \relative b {
+    \clef bass
+    \key g \major
+    \partial 16 b16 |
+    <g, d' b'~>4 b'16 a( g fis) g( d e fis) g( a b c) |
+    d16( b g fis) g( e d c) b(c d e) fis( g a b) |
+  }
+  \header {
+    piece = "Allemande."
+  }
+}
+@end lilypond
 
-@funindex arranger
-@item arranger
-Nombre del arreglista, a la derecha, debajo del Opus.
+Los campos de texto extraídos del bloque prinicipal de título de un
+libro se pueden imprimir en todos los bloques @code{\score}, o
+suprimirse manualmente:
 
-@funindex instrument
-@item instrument
-Nombre del instrumento, centrado, debajo del arreglista.  También
-aparece centrado en lo alto de cada página (aparte de la primera).
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    print-all-headers = ##t
+  }
+  \header {
+    title = "DAS WOHLTEMPERIRTE CLAVIER"
+    subtitle = "TEIL I"
+    % Do not display the tagline for this book
+    tagline = ##f
+  }
+  \markup { \vspace #1 }
+  \score {
+    \new PianoStaff <<
+      \new Staff { s1 }
+      \new Staff { \clef "bass" s1 }
+    >>
+    \header {
+      title = "PRAELUDIUM I"
+      opus = "BWV 846"
+      % Do not display the subtitle for this score
+      subtitle = ##f
+    }
+  }
+  \score {
+    \new PianoStaff <<
+      \new Staff { s1 }
+      \new Staff { \clef "bass" s1 }
+    >>
+    \header {
+      title = "FUGA I"
+      subsubtitle = "A 4 VOCI"
+      opus = "BWV 846"
+      % Do not display the subtitle for this score
+      subtitle = ##f
+    }
+  }
+}
+@end lilypond
 
-@funindex piece
-@item piece
-Nombre de la pieza, a la izquierda, debajo del instrumento.
+@seealso
+Referencia de la notación:
+@ref{Estructura del archivo},
+@ref{Personalización de los bloques de título}.
+
+
+@node Presentación predeterminada de los bloques de título del libro y la partitura
+@unnumberedsubsubsec Presentación predeterminada de los bloques de título del libro y la partitura
+@translationof Default layout of book and score title blocks
+
+La disposición y formato de los bloques de título están controlados
+por medio de dos variables de @code{\paper}: @code{bookTitleMarkup}
+para el bloque de título @code{\header} principal y
+@code{scoreTitleMarkup} para los bloques @code{\header} individuales
+dentro de un bloque @code{\score}.
+
+@lilypond[papersize=a6,quote,verbatim,noragged-right]
+\header {
+  % The following fields are centered
+  dedication = "Dedication"
+  title = "Title"
+  subtitle = "Subtitle"
+  subsubtitle = "Subsubtitle"
+  instrument = "Instrument"
+
+  % The following fields are left-aligned on the left side
+  poet = "Poet"
+  meter = "Meter"
+
+  % The following fields are right-aligned on the right side
+  composer = "Composer"
+  arranger = "Arranger"
+}
 
-@cindex página, saltos, forzar
-@funindex breakbefore
-@item breakbefore
-Esto fuerza que el título comience sobre una página nueva (establézcalo a ##t o a ##f).
+\score {
+  { s1 }
+  \header {
+    % The following fields are placed at opposite ends of the same line
+    piece = "Piece"
+    opus = "Opus"
+  }
+}
+@end lilypond
 
-@funindex copyright
-@item copyright
-Aviso de Copyright, centrado en la parte inferior de la primera
-página.  Para insertar el símbolo de copyright, consulte
-@ref{Codificación del texto}.
+@c Is the bit about \null markups true? -mp
 
-@funindex tagline
-@item tagline
-Cartel de propósito general en el pie de página, centrado al final de la última.
+Los campos de texto que se dejan sin establecer dentro de un bloque
+@code{\header} se sustituyen por elementos de marcado nulos
+@code{\null} de manera que no ocupen espacio innecesariamente.
 
-@end table
+Los ajustes predeterminados para @code{scoreTitleMarkup} sitúan los
+campos de texto @code{piece} y @code{opus} en extremos opuestos de la
+misma línea.
 
-A continuación presentamos una demostración de todos los campos que
-están disponibles.  Fíjese en que puede utilizar en la cabecera
-cualquier instrucción de marcado de texto (Véase @ref{Formatear el texto}).
+@cindex breakbefore
 
-@lilypond[quote,verbatim,line-width=11.0\cm]
-\paper {
-  line-width = 9.0\cm
-  paper-height = 10.0\cm
-}
+Utilice la variable @code{breakbefore} dentro de un bloque
+@code{\header} que está propiamente dentro de un bloque @code{\score}
+para hacer que los títulos del bloque @code{\header} del nivel
+superior aparezcan ocupando toda la primera página, empezando la
+música (definida en el bloque @code{\score}) en la página siguiente.
 
+@lilypond[papersize=a8landscape,verbatim,noragged-right]
 \book {
   \header {
-    dedication = "dedicated to me"
-    title = \markup \center-column { "Title first line" "Title second line,
-longer" }
-    subtitle = "the subtitle,"
-    subsubtitle = #(string-append "subsubtitle LilyPond version "
-(lilypond-version))
-    poet = "Poet"
-    composer =  \markup \center-column { "composer" \small "(1847-1973)" }
-    texttranslator = "Text Translator"
-    meter = \markup { \teeny "m" \tiny "e" \normalsize "t" \large "e" \huge
-"r" }
-    arranger = \markup { \fontsize #8.5 "a" \fontsize #2.5 "r" \fontsize
-#-2.5 "r" \fontsize #-5.3 "a" \fontsize #7.5 "nger" }
-    instrument = \markup \bold \italic "instrument"
-    piece = "Piece"
+    title = "This is my Title"
+    subtitle = "This is my Subtitle"
+    copyright = "This is the bottom of the first page"
   }
-
   \score {
-    { c'1 }
+    \repeat unfold 4 { e'' e'' e'' e'' }
     \header {
-      piece = "piece1"
-      opus = "opus1"
+      piece = "This is the Music"
+      breakbefore = ##t
+    }
+  }
+}
+@end lilypond
+
+@seealso
+Manual de aprendizaje:
+@rlearning{Cómo funcionan los archivos de entrada de LilyPond}
+
+Referencia de la notación:
+@ref{Estructura del archivo}.
+
+Archivos de inicio:
+@file{ly/titling-init.ly}.
+
+@node Disposición predeterminada de las cabeceras y pies de página
+@unnumberedsubsubsec Disposición predeterminada de las cabeceras y pies de página
+@translationof Default layout of headers and footers
+
+Las @emph{cabeceras} y los @emph{pies} de página son líneas de texto
+que aparecen en la parte más alta y en la más baja de las páginas
+separadas del texto principal de un libro.  Se controlan mediante las
+siguientes variables de @code{\paper}:
+
+@itemize
+@item @code{oddHeaderMarkup} (marcado de cabecera impar)
+@item @code{evenHeaderMarkup} (marcado de cabecera par)
+@item @code{oddFooterMarkup} (marcado de pie impar)
+@item @code{evenFooterMarkup} (marcado de pie par)
+@end itemize
+
+Estas variables de marcado sólo pueden acceder a los campos de texto
+extraídos de bloques @code{\header} del nivel superior (que se aplican
+a todas las partituras del libro) y se definen en el archivo
+@file{ly/titling-init.ly}.  De forma predeterminada:
+
+@itemize
+
+@item
+los números de página se sitúan automáticamente en el extremo superior
+izquierdo (si es par) o superior derecho (si es impar), a partir de la
+segunda página.
+
+@item
+el campo de texto @code{instrument} se sitúa en el centro en cada
+página, a partir de la segunda página.
+
+@item
+el texto de @code{copyright} se centra en la parte baja de la primera
+página.
+
+@item
+la línea @code{tagline} se centra al final de la última página, y
+debajo del texto de @code{copyright} si sólo hay una página.
+
+@end itemize
+
+@lilypond[papersize=a8landscape]
+\book {
+  \score {
+    \relative c' {
+      c4 d e f
     }
   }
-  \markup {
-      and now...
+}
+@end lilypond
+
+La línea de etiqueta tagline predeterminada se puede cambiar añadiendo un campo
+@code{tagline} en el bloque @code{\header} del nivel superior.
+
+@lilypond[papersize=a8landscape,verbatim]
+\book {
+  \header {
+    tagline = "... music notation for Everyone"
   }
   \score {
-    { c'1 }
-    \header {
-      piece = "piece2"
-      opus = "opus2"
+    \relative c' {
+      c4 d e f
     }
   }
 }
 @end lilypond
 
-Como se mostró anteriormente, puede usar varios bloques
-@code{\header}.  Cuando los mismos campos aparecen en distintos
-bloques, tiene validez el último en definirse.  A continuación un
-breve ejemplo.
+Para eliminar la línea @code{tagline}, establezca su valor a
+@code{##f}.
+
+
+@node Cabeceras pies y títulos personalizados
+@subsection Cabeceras, pies y títulos personalizados
+@translationof Custom headers footers and titles
+
+@c TODO: somewhere put a link to header spacing info
+@c       (you'll have to explain it more in NR 4).
+
+@menu
+* Formateo personalizado del texto de los bloques de título::
+* Personalización de los bloques de título::
+* Disposición personalizada de cabeceras y pies de página::
+@end menu
+
+
+@node Formateo personalizado del texto de los bloques de título
+@unnumberedsubsubsec Formateo personalizado del texto de los bloques de título
+@translationof Custom text formatting for title blocks
+
+Se pueden usar instrucciones @code{\markup} estándar para personalizar
+el texto de cualquier cabecera, pie o título dentro del bloque
+@code{\header}.
+
+@lilypond[quote,verbatim,noragged-right]
+\score {
+  { s1 }
+  \header {
+    piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
+    subtitle = \markup { \italic "(Excerpt)" }
+  }
+}
+@end lilypond
+
+@seealso
+Referencia de la notación:
+@ref{Formatear el texto}.
+
+
+@node Personalización de los bloques de título
+@unnumberedsubsubsec Personalización de los bloques de título
+@translationof Custom layout for title blocks
+
+Las instrucciones @code{\markup} dentro del bloque @code{\header} son
+útiles para dar un formato simple al texto, pero no permiten un
+control preciso sobre la colocación de los títulos.  Para personalizar
+la colocación de los campos de texto, use una o las dos variables de
+@code{\paper} siguientes:
+
+@itemize
+@item @code{bookTitleMarkup} (marcado de título del libro)
+@item @code{scoreTitleMarkup} (marcado de título de la partitura)
+@end itemize
+
+Estas variables de marcado se estudian en
+@ref{Presentación predeterminada de los bloques de título del libro y la partitura}.
+
+Los ajustes predeterminados para @code{scoreTitleMarkup} tal y como
+están definidos en el archivo @file{ly/titling-init.ly} son:
 
 @example
-\header @{
-  composer = "Compositor"
-@}
-\header @{
-  piece = "Pieza"
-@}
-\score @{
-  \new Staff @{ c'4 @}
-  \header @{
-    piece = "Otra pieza"  % sobreescribe a la anterior
+scoreTitleMarkup = \markup @{ \column @{
+  \on-the-fly #print-all-headers @{ \bookTitleMarkup \hspace #1 @}
+  \fill-line @{
+    \fromproperty #'header:piece
+    \fromproperty #'header:opus
   @}
 @}
+@}
 @end example
 
-Si define la cabecera @code{\header} dentro del bloque @code{\score},
-por lo general se imprimirán solamente las cabeceras @code{piece} y
-@code{opus}.  Fíjese en que la expresión musical debe aparecer antes
-del @code{\header}.
+Esto sitúa los campos de texto @code{piece} y @code{opus} en extremos
+opuestos de la misma línea:
 
-@lilypond[quote,verbatim,line-width=11.0\cm]
+@lilypond[quote,verbatim,noragged-right]
 \score {
-  { c'4 }
+  { s1 }
   \header {
-    title = "title"  % not printed
-    piece = "piece"
-    opus = "opus"
+    piece = "PRAELUDIUM I"
+    opus = "BWV 846"
   }
 }
 @end lilypond
 
-@funindex print-all-headers
-@noindent
-Se puede cambiar este comportamiento (e imprimir todas las cabeceras
-cuando la cabecera @code{\header} está definida dentro del bloque
-@code{\score}) mediante la utilización de
+Este ejemplo redefine @code{scoreTitleMarkup} de manera que el campo
+de texto @code{piece} aparece centrado y en un tipo de letra grande y
+en negrita.
 
-@example
-\paper@{
-  print-all-headers = ##t
-@}
-@end example
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    indent = 0\mm
+    scoreTitleMarkup = \markup {
+      \fill-line {
+        \null
+        \fontsize #4 \bold \fromproperty #'header:piece
+        \fromproperty #'header:opus
+      }
+    }
+  }
+  \header { tagline = ##f }
+  \score {
+    { s1 }
+    \header {
+      piece = "PRAELUDIUM I"
+      opus = "BWV 846"
+    }
+  }
+}
+@end lilypond
 
-@cindex copyright
-@cindex tagline
+Los campos de texto reservados normalmente para el bloque principal de
+título se pueden insertar dentro de los bloques de título de las
+partituras individuales con la variable @code{print-all-headers}
+establecida dentro del bloque @code{\paper}.  Una desventaja de la
+utilización de este método es que los campos de texto que están
+orientados específicamente para el bloque @code{\header} del nivel
+superior han de suprimirse manualmente en cada uno de los bloques
+@code{\score}.  Véase @ref{Explicación de los bloques de títulos}.
+
+Para evitarlo, añada el campo de texto deseado a la definición de
+@code{scoreTitleMarkup}.  En el ejemplo siguiente, el campo de texto
+@code{composer} (asociado normalmente con @code{bookTitleMarkup}) se
+añade a @code{scoreTitleMarkup}, permitiendo que cada partitura
+muestre un compositor diferente:
+
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    indent = 0\mm
+    scoreTitleMarkup = \markup {
+      \fill-line {
+        \null
+        \fontsize #4 \bold \fromproperty #'header:piece
+        \fromproperty #'header:composer
+      }
+    }
+  }
+  \header { tagline = ##f }
+  \score {
+    { s1 }
+    \header {
+      piece = "MENUET"
+      composer = "Christian Petzold"
+    }
+  }
+  \score {
+    { s1 }
+    \header {
+      piece = "RONDEAU"
+      composer = "François Couperin"
+    }
+  }
+}
+@end lilypond
 
-El pie de página por omisión se encuentra vacío, excepto para la
-primera página, en la que se inserta el campo de @code{copyright}
-extraído del @code{\header}, y para la última página, en la que se
-escribe el cartel @code{tagline} sacado del bloque @code{\header}.  La
-línea por omisión para este cartel es @qq{Music engraving by LilyPond
-(@var{version})}.@footnote{Las partituras bien tipografiadas son una
-magnífica promoción para nosotros, así que por favor, si puede,
-conserve intacta la línea del letrero.}
+También podemos crear nuestros propios campos de texto personalizados,
+y referirnos a ellos en la definición del elemento de marcado.
 
-Las cabeceras se pueden quitar completamente estableciendo su valor a
-falso.
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    indent = 0\mm
+    scoreTitleMarkup = \markup {
+      \fill-line {
+        \null
+        \override #`(direction . ,UP) {
+          \dir-column {
+            \center-align \fontsize #-1 \bold
+              \fromproperty #'header:mycustomtext %% User-defined field
+            \center-align \fontsize #4 \bold
+              \fromproperty #'header:piece
+          }
+        }
+        \fromproperty #'header:opus
+      }
+    }
+  }
+  \header { tagline = ##f }
+  \score {
+    { s1 }
+    \header {
+      piece = "FUGA I"
+      mycustomtext = "A 4 VOCI" %% User-defined field
+      opus = "BWV 846"
+    }
+  }
+}
+@end lilypond
 
-@example
-\header @{
-  tagline = ##f
-  composer = ##f
-@}
-@end example
+@seealso
+Referencia de la notación:
+@ref{Explicación de los bloques de títulos}.
 
 
-@node Encabezamientos pies y títulos personalizados
-@subsection Encabezamientos, pies y títulos personalizados
-@translationof Custom headers footers and titles
+@node Disposición personalizada de cabeceras y pies de página
+@unnumberedsubsubsec Disposición personalizada de cabeceras y pies de página
+@translationof Custom layout for headers and footers
 
-Una opción más avanzada es cambiar las definiciones de las variables
-siguientes dentro del bloque @code{\paper}.  El archivo de inicio
-@file{../ly/titling-init.ly} ofrece un listado de la
-disposición predeterminada.
-
-@table @code
-@funindex bookTitleMarkup
-@item bookTitleMarkup
-  Es el título que se escribe en lo alto del documento de salida
-completo.  Normalmente contiene el compositor y el título de la pieza.
-
-@funindex scoreTitleMarkup
-@item scoreTitleMarkup
-  Es el título que se coloca por encima de un bloque @code{\score}.
-normalmente contiene el nombre del movimiento (campo @code{piece}).
-
-@funindex oddHeaderMarkup
-@item oddHeaderMarkup
-  Es el encabezamiento de las páginas de numeración impar.
-
-@funindex evenHeaderMarkup
-@item evenHeaderMarkup
-  Es el encabezamiento de las páginas de numeración par.  Si se deja
-  sin especificar, se usará el encabezamiento de las páginas impares.
-
-  De forma predeterminada, los encabezamientos se definen de tal forma
-que el número de página está en el borde exterior, y el instrumento
-está centrado.
-
-@funindex oddFooterMarkup
-@item oddFooterMarkup
-  Es el pie de las páginas de numeración impar.
-
-@funindex evenFooterMarkup
-@item evenFooterMarkup
-  Es el pie de las páginas de numeración par.  Si se deja sin
-  especificar, se usará en su lugar el encabezamiento de las páginas
-  impares.
-
-  De forma predeterminada, el pie de página tiene el aviso de
-copyright en la primera página, y el cartel @code{tagline} en la
-última.
-@end table
-
-
-@cindex \paper
-@cindex encabezamiento
-@cindex header
-@cindex pie
-@cindex disposición de la página
-@cindex títulos
-
-La definición siguiente pone el título en el extremo izquierdo, y el
-compositor en el extremo derecho sobre una única línea.
+@c can make-header and make-footer be removed from
+@c paper-defaults-init.ly? -mp
 
-@example
-\paper @{
-  bookTitleMarkup = \markup @{
-   \fill-line @{
-     \fromproperty #'header:title
-     \fromproperty #'header:composer
-   @}
-  @}
-@}
-@end example
+Las instrucciones @code{\markup} dentro del bloque @code{\header} son
+de utilidad para dar formato al texto de una manera sencilla, pero no
+permiten un control preciso sobre la colocación de las cabeceras y los
+pies de página.  Para personalizar la colocación de los campos de
+texto, use una o más de las siguientes variables de @code{\paper}:
 
-El encabezamiento y el pie se crean por parte de las funciones
-@code{make-header} y @code{make-footer}, definidas dentro de
-@code{\paper}.  Las implementaciones predeterminadas están en
-@file{ly/paper-defaults-init.ly} y @file{ly/titling-init.ly}.
+@itemize
+@item @code{oddHeaderMarkup} (marcado de encabezamiento impar)
+@item @code{evenHeaderMarkup} (marcado de encabezamiento par)
+@item @code{oddFooterMarkup} (marcado de pie de página impar)
+@item @code{evenFooterMarkup} (marcado de pie de página par)
+@end itemize
 
-Este ejemplo centra los números de página en la parte de abajo de cada
-una.
+El ejemplo siguiente centra los números de página en la parte baja de
+las páginas.  En primer lugar, los ajustes predeterminados para
+@code{oddHeaderMarkup} y @code{evenHeaderMarkup} se eliminan
+definiéndolos como un marcado @emph{nulo}.  Después de esto, se
+redefine @code{oddFooterMarkup} con el número de página centrado.
+Finalmente, @code{evenFooterMarkup} recibe la misma disposición
+definiéndola como @code{\oddFooterMarkup}:
 
-@example
-\paper @{
-  print-page-number = ##t
-  print-first-page-number = ##t
-  oddHeaderMarkup = \markup \fill-line @{ " " @}
-  evenHeaderMarkup = \markup \fill-line @{ " " @}
-  oddFooterMarkup = \markup @{
-    \fill-line @{
-      \bold \fontsize #3
-      \on-the-fly #print-page-number-check-first
-      \fromproperty #'page:page-number-string
-    @}
-  @}
-  evenFooterMarkup = \markup @{
-    \fill-line @{
-      \bold \fontsize #3
-      \on-the-fly #print-page-number-check-first
-      \fromproperty #'page:page-number-string
-    @}
-  @}
-@}
-@end example
+@lilypond[papersize=a8,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    print-page-number = ##t
+    print-first-page-number = ##t
+    oddHeaderMarkup = \markup \null
+    evenHeaderMarkup = \markup \null
+    oddFooterMarkup = \markup {
+      \fill-line {
+        \on-the-fly #print-page-number-check-first
+        \fromproperty #'page:page-number-string
+      }
+    }
+    evenFooterMarkup = \oddFooterMarkup
+  }
+  \score {
+    \new Staff { s1 \break s1 \break s1 }
+  }
+}
+@end lilypond
+
+@seealso
+Notation Reference:
+@ref{Explicación de los bloques de títulos},
+@ref{Presentación predeterminada de los bloques de título del libro y la partitura}.
 
 
-@node Referencias a números de página
-@subsection Referencias a números de página
+@node Referencia a números de página
+@subsection Referencia a números de página
 @translationof Reference to page numbers
 
-Se puede marcar un lugar determinado de una partitura utilizando la
-instrucción @code{\label} (etiqueta), bien en lo alto de la estructura
-o bien dentro de la música.  Posteriormente se puede hacer referencia
-a esta etiqueta dentro de un elemento de marcado, para obtener el
-número de la página en que se encuentra la marca, usando la
-instrucción de marcado @code{\page-ref}.
+Un lugar determinado de una partitura puede señalizarse usando la
+instrucción @code{\label} (etiqueta), ya sea en el nivel superior o
+dentro de la música.  Podemos referirnos a esta etiqueta más tarde
+dentro de un elemento de marcado, para obtener el número de la página
+en la que se sitúa el punto señalizado, usando la instrucción de
+marcado @code{\page-ref}.
 
-@lilypond[verbatim,line-width=11.0\cm]
+@lilypond[verbatim]
 \header { tagline = ##f }
 \book {
   \label #'firstScore
@@ -863,7 +1081,6 @@ instrucción de marcado @code{\page-ref}.
       c'1
     }
   }
-
   \markup { The first score begins on page \page-ref #'firstScore "0" "?" }
   \markup { Mark A is on page \page-ref #'markA "0" "?" }
 }
@@ -1040,7 +1257,6 @@ Archivos de inicio:
 * Inclusión de archivos de LilyPond::
 * Distintas ediciones a partir de una misma fuente::
 * Codificación del texto::
-* Presentar la notación de LilyPond::
 @end menu
 
 
@@ -1564,36 +1780,6 @@ Para escribir el símbolo de copyright en la nota de créditos, utilice:
 @end example
 
 
-@node Presentar la notación de LilyPond
-@subsection Presentar la notación de LilyPond
-@translationof Displaying LilyPond notation
-
-@funindex \displayLilyMusic
-La impresión textual de una expresión musical en notación de LilyPond
-puede hacerse con la función musical @code{\displayLilyMusic} pero solamente
-mediante la línea de órdenes.  Por ejemplo,
-
-@example
-@{
-  \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
-@}
-@end example
-
-imprimirá
-
-@example
-@{ a,4 cis e fis g @}
-@end example
-
-De forma predeterminada, LilyPond imprime estos mensajes en la consola
-junto al resto de los mensajes de la compilación de LilyPond.
-Para discernir entre estos mensajes y
-guardar el resultado de @code{\display@{MATERIAL@}}, redireccione la
-salida hacia un archivo.
-
-@example
-lilypond archivo.ly >resultado.txt
-@end example
 
 
 
@@ -2452,3 +2638,108 @@ como los @notation{trinos}.
 
 Articulate acorta los acordes, y ciertos fragmentos de música
 (especialmente la música de órgano) es posible que suene peor.
+
+
+@node Extraer información musical
+@section Extraer información musical
+@translationof Extracting musical information
+
+Además de crear un resultado visual y MIDI,
+LilyPond es capaz de presentar información
+musical en forma de texto.
+
+@menu
+* Impresión del código de notación de LilyPond::
+* Impresión de las expresiones musicales de Scheme::
+* Guardar los eventos musicales en un archivo::
+@end menu
+
+@node Impresión del código de notación de LilyPond
+@subsection Displaying LilyPond notation
+@translationof Displaying LilyPond notation
+
+@funindex \displayLilyMusic
+La impresión textual de una expresión musical en notación de LilyPond
+puede hacerse con la función musical @code{\displayLilyMusic} pero solamente
+mediante la línea de órdenes.  Por ejemplo,
+
+@example
+@{
+  \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
+@}
+@end example
+
+imprimirá
+
+@example
+@{ a,4 cis e fis g @}
+@end example
+
+De forma predeterminada, LilyPond imprime estos mensajes en la consola
+junto al resto de los mensajes de la compilación de LilyPond.
+Para discernir entre estos mensajes y
+guardar el resultado de @code{\display@{MATERIAL@}}, redireccione la
+salida hacia un archivo.
+
+@example
+lilypond archivo.ly >resultado.txt
+@end example
+
+
+@node Impresión de las expresiones musicales de Scheme
+@subsection Impresión de las expresiones musicales de Scheme
+@translationof Displaying scheme music expressions
+
+Véase @rextend{Presentación de las expresiones musicales}.
+
+
+@node Guardar los eventos musicales en un archivo
+@subsection Guardar los eventos musicales en un archivo
+@translationof Saving music events to a file
+
+Los eventos musicales se pueden guardar en un archivo pentagrama a
+pentagrama mediante la inclusión de un archivo en nuestra partitura
+principal.
+
+@example
+\include "event-listener.ly"
+@end example
+
+De esta forma se crean uno o más archivos llamados
+@file{FILENAME-STAFFNAME.notes} ó @file{FILENAME-unnamed-staff.notes}
+para cada pentagrama.  Observe que si tiene más de un pentagrama sin
+nombre, los eventos de todos los pentagramas se mezclarán entre sí
+dentro del mismo archivo.  El resultado tiene el aspecto siguiente:
+
+@example
+0.000   note     57       4   p-c 2 12
+0.000   dynamic  f
+0.250   note     62       4   p-c 7 12
+0.500   note     66       8   p-c 9 12
+0.625   note     69       8   p-c 14 12
+0.750   rest     4
+0.750   breathe
+@end example
+
+La sintaxis consiste en una línea delimitada por caracteres de
+tabulación, con dos campos fijos en cada línea seguidos de parámetros
+opcionales.
+
+@example
+@var{tiempo}  @var{tipo}  @var{...parámetros...}
+@end example
+
+Esta información se puede leer fácilmente por parte de otros programas
+como guiones de Python, y pueden ser muy útiles para aquellos
+investigadores que desean realizar un análisis musical o hacer
+experimientos de reproducción con LilyPond.
+
+
+@knownissues
+
+No todos los eventos musicales de lilypond están contemplados por
+@file{event-listener.ly}.  Se pretende que sea una @qq{prueba de
+concepto} bien realizada.  Si algunos eventos que quiere ver no
+aparecen incluidos, copie @file{event-listener.ly} en su carpeta de
+lilypond y modifique el archivo de forma que produzca la información
+que desea.
index 05cf7deb4f1c46399f647bc3c1b47ff6fe59f46e..dda15e148ed53bb39ada1913820f132ec814b5db 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 104566603d933821fbdbb7696ef0b5bbd3fa0797
+    Translation of GIT committish: c388d94847574943f7766c5fd5f9cdb5ab8128bb
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -24,7 +24,6 @@ denominan abreviadamente @qq{teclados} a todo este grupo de
 instrumentos de varios pentagramas, aunque algunos de ellos no tienen
 teclado.
 
-
 @menu
 * Notación común para instrumentos de teclado::
 * Piano::
@@ -240,11 +239,6 @@ pueden resolver manualmente donde sea necesario, utilizando los
 métodos descritos en la sección
 @rlearning{Arreglar notación con superposiciones}.
 
-@knownissues
-El mecanismo para evitar las colisiones de barras de corchea no
-funciona para las barras automáticas que terminan justo antes de un
-cambio de pauta.  Para hacer que ello funcione, utilice barrado
-manual.
 
 @seealso
 Manual de aprendizaje:
@@ -262,6 +256,12 @@ Referencia de funcionamiento interno:
 @rinternals{Beam},
 @rinternals{ContextChange}.
 
+@knownissues
+El mecanismo para evitar las colisiones de barras de corchea no
+funciona para las barras automáticas que terminan justo antes de un
+cambio de pauta.  Para hacer que ello funcione, utilice barrado
+manual.
+
 
 @node Cambiar de pentagrama automáticamente
 @unnumberedsubsubsec Cambiar de pentagrama automáticamente
index 0958bd5fd5c1c22ffafc1e7e9ab87bf8a99fe653..839543e88ab1092804a0896899ced5b13fae564c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 5becf12f5ada67346f70ad8cfe68589466619305
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 3394c321ded2f18fded6353ccd82f669f27efbbe..d41a3acf53f910e44720c32326aaef24501116b3 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 12b57c70c11592c8a1e70b0bbc486c3fdf66f190..63abf0b7fcf9666868837008e928c31dd8f66d23 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 274c916b48393e0f866cbab68c18a505f6fc7ea3
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index ddf1edc3558546a147857c9159965678498ca944..d41427e20346cb1225d900a6474dfb39d5001e25 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 57e3ef0a15d9679cf31de90b2584e9803226d367
+    Translation of GIT committish: 70a015a514dd4af9e9aa7d643f8bbcb1e58c0a70
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -603,9 +603,9 @@ Esta sección trata de la manera de modificar las alturas.
 @menu
 * Comprobación de octava::
 * Transposición::
-* Inversion::
-* Retrograde::
-* Modal transformations::
+* Inversión::
+* Retrogradación::
+* Transformaciones modales::
 @end menu
 
 
@@ -827,6 +827,10 @@ La conversión relativa no afecta a las secciones @code{\transpose},
 usar el modo relativo dentro de música transportada, se debe colocar
 otro @code{\relative} dentro de @code{\transpose}.
 
+No se imprimen alteraciones accidentales triples cuando se usa
+@code{\transpose}.  En lugar de ello, se usará una nota @q{equivalente
+enarmónicamente} (p.ej., Re bemol en lugar de Mi triple bemol).
+
 @node Inversión
 @unnumberedsubsubsec Inversión
 @translationof Inversion
@@ -1173,20 +1177,23 @@ c2 c
 
 Ciertas claves para usos especiales se describen en @ref{Claves de la
 música mensural}, @ref{Claves de canto gregoriano}, @ref{Tablaturas
-predeterminadas} y @ref{Tablaturas personalizadas}.
+predeterminadas} y @ref{Tablaturas personalizadas}.  Para mezclar
+distintas claves al usar notas guía dentro de una partitura,
+consulte las funciones @code{\cueClef} y @code{\cueDuringWithClef}
+en la sección @ref{Formateo de las notas guía}.
 
 @snippets
 
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {tweaking-clef-properties.ly}
 
-
 @seealso
 Referencia de la notación:
 @ref{Claves de la música mensural},
 @ref{Claves de canto gregoriano},
 @ref{Tablaturas predeterminadas}
-@ref{Tablaturas personalizadas}.
+@ref{Tablaturas personalizadas},
+@ref{Formateo de las notas guía}.
 
 Fragmentos de código:
 @rlsr{Pitches}.
@@ -1701,9 +1708,9 @@ musicB = {
 
 Esta regla corresponde a la práctica común del s. XX.  Omite algunos
 becuadros adicionales, que tradicionalmente se imprimían precediendo a
-las alteraciones que reducen o invierten la dirección de una
-alteración anterior.  La regla @code{modern} imprime las mismas
-alteraciones que el estilo @code{default}, con dos excepciones que
+un sostenido que sigue a un doble sostenido, o a un bemol que sigue
+a un doble bemol.  La regla @code{modern} imprime las mismas
+alteraciones que el estilo @code{default}, con dos adiciones que
 sirven para evitar la ambigüedad: después de alteraciones temporales
 se imprimen indicaciones de cancelación también en el compás siguiente
 (para notas en la misma octava) y, en el mismo compás, para notas en
index fdaf0e0854f903b617278c9ea416cd3ba71d1e31..95da6782f28292e8aa2a3d9f6b6f2733f1be635b 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 85fe0f15000f793435221fab2688ba3fa65a028f
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 9505fc2cc58010807193adb02fcc7deae19d08fe..ff84945958cf6c3f7c37299478a748468609ae0e 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 53390e0570f4544c131e77323cdc4f4ea738bddd
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 24777091564583ed01ace24efbeba916a5b2a58d..8e0f370d9994f4da5dcc942d10bdba0dac98fd44 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: d0c8e3162e9d2c0c7195ce8d58e3dd63bf57aca4
+    Translation of GIT committish: 8dec1b16ae6daff5b9a0f9fb806db66cf87bc5bd
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -793,41 +793,41 @@ tienen también distinto puntillo, no están claros.
 @funindex partcombine
 
 La combinación automática de particellas se usa para mezclar dos
-partes musicales sobre un pentagrama.  Tiene como objetivo el
-tipografiado de partituras orquestales.  Cuando las dos partes son
-idénticas durante un período de tiempo, sólo se presenta una de ellas.
-En los lugares en que las dos partes son diferentes, se tipografían
-como voces separadas, y las direcciones de las plicas se establecen de
-forma automática.  También las partes de solo y @notation{a due}
-quedan identificadas y es posible marcarlas.
+partes musicales distintas sobre un pentagrama.  Esto puede ser de
+gran ayuda especialmente al tipografiar partituras orquestales.
+Se imprime una sola voz cuando la música de las dos voces es la misma,
+pero en aquellos lugares en que difieren, se imprime una segunda
+voz.  Las direcciones de las plicas se establecen hacia arriba o hacia
+abajo según proceda, al tiempo que se identifican y quedan marcadas
+las partes de solista y de dúo.
 
-La sintaxis para la combinación de las partes es:
+La sintaxis para la combinación automática de las partes es:
 
 @example
 \partcombine @var{expresión_musical_1} @var{expresión_musical_2}
 @end example
 
-El ejemplo siguiente ejemplifica la funcionalidad básica del
-combinador de partes: poner las partes en un solo pentagrama, y
-establecer las direcciones de las plicas y la polifonía. Se utilizan
-las mismas variables para las partes independientes y el pentagrama
-combinado.
+El ejemplo siguiente ejemplifica la funcionalidad básica,
+poniendo las partes en un solo pentagrama en forma polifónica, y
+estableciendo las direcciones de las plicas de forma adecuada.
+Se utilizan las mismas variables para las partes
+independientes y el pentagrama combinado.
 
 @lilypond[quote,verbatim]
 instrumentOne = \relative c' {
-  c4 d e f
-  R1
-  d'4 c b a
-  b4 g2 f4
-  e1
+  c4 d e f |
+  R1 |
+  d'4 c b a |
+  b4 g2 f4 |
+  e1 |
 }
 
 instrumentTwo = \relative g' {
-  R1
-  g4 a b c
-  d c b a
-  g f( e) d
-  e1
+  R1 |
+  g4 a b c |
+  d4 c b a |
+  g4 f( e) d |
+  e1 |
 }
 
 <<
@@ -837,21 +837,21 @@ instrumentTwo = \relative g' {
 >>
 @end lilypond
 
-Las notas del tercer compás aparecen solamente una vez a pesar de que
-se han especificado en las dos partes.  Las direcciones de las plicas
+Las dos partes tienen notas idénticas en el tercer compás,
+por lo que aparecen solamente una vez.  Las direcciones de las plicas
 y ligaduras se establecen de forma automática, según se trate de un
 solo o de un unísono.  Cuando se necesita en situaciones de polifonía,
-la primera parte (que recibe el nombre de contexto @code{one}) siempre
+la primera parte (que recibe el nombre de contexto @code{one})
 recibe las plicas hacia arriba, mientras que la segunda (llamada
 @code{two}) siempre recibe las plicas hacia abajo.  En los fragmentos
 de solo, las partes se marcan con @qq{Solo} y @qq{Solo II},
 respectivamente.  Las partes en unísono (@notation{a due}) se marcan
-con el texto predeterminado @qq{a2}.
+con el texto @qq{a2}.
 
 Los dos argumentos de @code{\partcombine} se interpretan como
-contextos de @rinternals{Voice}.  Si se están usando octavas
-relativas, se debe especificar @code{\relative} para ambas expresiones
-musicales, es decir:
+contextos de @rinternals{Voice} separados, por lo que si la música
+está escrita en modo relativo, entonces @emph{las dos} partes han
+de incluir la función @code{\relative}, es decir:
 
 @example
 \partcombine
@@ -864,55 +864,69 @@ Una sección @code{\relative} que se encuentra fuera de
 @code{\partcombine} no tiene ningún efecto sobre las notas de
 @code{@var{expresión_musical_1}} y @code{@var{expresión_musical_2}}.
 
+@funindex \partcombineChords
+@funindex partcombineChords
+@funindex \partcombineApart
+@funindex partcombineApart
+@funindex \partcombineUnisono
+@funindex partcombineUnisono
+@funindex \partcombineSoloI
+@funindex partcombineSoloI
+@funindex \partcombineSoloII
+@funindex partcombineSoloII
+@funindex \partcombineAutomatic
+@funindex partcombineAutomatic
+
 En las partituras profesionales, las voces con frecuencia se mantienen
-separadas durante períodos prolongados, incluso si una o dos notas
-llegan a coincidir y podrían escribirse fácilmente como un
+separadas entre sí durante pasajes prolongados incluso si algunas
+notas coninciden entre ambas, y podrían escribirse fácilmente como un
 unísono. Por ello, la combinación de las notas en un acorde, o mostrar
 una voz como solo, no son soluciones ideales porque la función
-@code{\partcombine} considera cada nota de forma separada.  Por este
-motivo, el resultado de la función @code{\partcombine} alterar o
-corregir con las instrucciones siguientes:
+@code{\partcombine} considera cada nota de forma individual.  En este
+caso, el resultado de la función @code{\partcombine} se puede
+alterar o corregir con las instrucciones siguientes:
+
+Las instrucciones que finalizan en @code{...Once} se aplican
+exclusivamente a la nota siguiente dentro de la expresión musical.
 
 @itemize
 @item
-@code{\partcombineApart}, @code{\partcombineApartOnce}:
-Mantener las notas como dos voces separadas incluso si se pueden
+@code{\partcombineApart} y @code{\partcombineApartOnce}
+mantienen las notas como dos voces separadas incluso si se pueden
 combinar en un acorde o unísono.
 
 @item
-@code{\partcombineChords}, @code{\partcombineChordsOnce}:
-Combinar las notas en un acorde.
+@code{\partcombineChords} y @code{\partcombineChordsOnce}
+combinan las notas en un acorde.
 
 @item
-@code{\partcombineUnisono}, @code{\partcombineUnisonoOnce}:
-Las dos voces forman unísono.
+@code{\partcombineUnisono} y @code{\partcombineUnisonoOnce}
+combinan las dos voces como unísono y marcan el resultado
+como @qq{unison}.
 
 @item
-@code{\partcombineSoloI}, @code{\partcombineSoloIOnce}:
-Mostrar solo la voz uno y marcarla como solo.
+@code{\partcombineSoloI} y @code{\partcombineSoloIOnce}
+muestran solo la voz uno y la marcan como @qq{Solo}.
 
 @item
-@code{\partcombineSoloII}, @code{\partcombineSoloIIOnce}:
-Mostrar solo la voz dos y marcarla como solo.
+@code{\partcombineSoloII} o @code{\partcombineSoloIIOnce}
+imprimen solo la voz dos y la marcan como @qq{Solo}.
 
 @item
-@code{\partcombineAutomatic}, @code{\partcombineAutomaticOnce}:
-Terminar el efecto de las instrucciones especiales anteriores y volver
-al mecanismo predeterminado de combinación de partes.
+@code{\partcombineAutomatic} y @code{\partcombineAutomaticOnce}
+terminan el efecto de las instrucciones anteriores y retornan a la
+funcionalidad estándar de @code{\partcombine}.
 
 @end itemize
 
-Todas las instrucciones que finalizan en @code{...Once} se aplican
-exclusivamente a la nota siguiente.
-
 @lilypond[quote,verbatim]
 instrumentOne = \relative c' {
   \partcombineApart c2^"apart" e |
-  \partcombineAutomatic e^"auto" e |
-  \partcombineChords e'^"chord" e |
-  \partcombineAutomatic c^"auto" c |
-  \partcombineApart c^"apart" \partcombineChordsOnce e^"chord once" |
-  c c |
+  \partcombineAutomatic e2^"auto" e |
+  \partcombineChords e'2^"chord" e |
+  \partcombineAutomatic c2^"auto" c |
+  \partcombineApart c2^"apart" \partcombineChordsOnce e^"chord once" |
+  c2 c |
 }
 instrumentTwo = \relative c' {
   c2 c |
@@ -958,30 +972,47 @@ Referencia de funcionamiento interno:
 
 @knownissues
 
-@code{\partcombine} sólo admite dos voces.
-
-Si @code{printPartCombineTexts} está establecido, cuando las dos voces
-tocan y terminan las mismas notas, el combinador de partes puede
-tipografiar @code{a2} más de una vez en el mismo compás.
-
-@code{\partcombine} no puede estar dentro de @code{\times}.
-
-@code{\partcombine} no puede estar dentro de @code{\relative}.
-
-Internamente, el @code{\partcombine} interpreta los dos argumentos
-como @code{Voice}s y decide cuándo se pueden combinar las dos partes.
-Cuando tienen distintas duraciones, no se combinan y reciben los
-nombres @code{one} y @code{two}.  Como consecuencia, si los argumentos
-cambian a contextos de @rinternals{Voice} con nombres diferentes, los
-eventos que contienen se ignorarán.  De forma similar, la combinación
-de partes no está pensada para que funcione con la letra de las
-canciones; cuando una de las voces recibe un nombre explícito con el
-objeto de adjuntarle una letra, la combinación de partes deja de
-funcionar.
+Toas las funciones @code{\partcombine} admiten exclusivamente dos voces
+y no están diseñadas para funcionar con la letra de las canciones;
+de manera que cuando una de las voces recibe explícitamente un
+nombre para aplicarle una letra, el combinador de partes
+deja de funcionar.
+
+Las funciones @code{\partcombine...} no se pueden escribir dentro
+de los bloques @code{\times} ni @code{\relative}.
+
+Si @code{printPartCombineTexts} está establecido y las dos voces
+tocan y terminan las mismas notas en el mismo compás,
+el combinador de partes puede tipografiar @code{a2} más de una vez
+en ese compás.
+
+@code{\partcombine} solo tiene en cuenta el momento de inicio de las
+notas dentro de una voz @code{Voice}; por ejemplo, no puede recordar
+si una nota dentro de una voz ya ha comenzado cuando las notas que se
+combinan se han iniciado justo ahora en la otra voz.  Esto puede
+conducir a cierto número de problemas inesperados entre los que se
+incluye la impresión incorrecta de marcas de @qq{Solo} o de
+@qq{Unison}.
+
+@code{\partcombine} conserva todos los elementos extensos (ligaduras,
+reguladores, etc.) dentro del mismo contexto @code{Voice} de forma que
+si uno cualquiera de estos elementos extensos inicia o termina en un
+contexto @code{Voice} diferente, puede no imprimirse o hacerlo
+incorrectamente.
+
+Si la función @code{\partcombine} no puede combinar las dos
+expresiones musicales (es decir, cuando las dos voces tienen
+duraciones distintas), otorgará internamente sus propios nombres a las
+voces: @code{one} y @code{two} respectivamente.  Esto significa que si
+se produce un cambio a un contexto @code{Voice} que tenga un nombre
+distinto, se ignorarán los eventos dentro del contexto @code{Voice}
+que tiene el nombre distinto.
+
+Consulte también el apartado @emph{Advertencias y problemas conocidos}
+en la sección @ref{Tablaturas predeterminadas} al utilizar
+@code{\partcombine} con tablaturas, y la @emph{Nota} de
+@ref{Barras automáticas} al utilizar barrado automático.
 
-@code{\partcombine} observa solamente los tiempos de ataque de las
-notas.  No puede determinar si una nota iniciada previamente está
-sonando o no, lo que origina diversos problemas.
 
 @node Escribir música en paralelo
 @unnumberedsubsubsec Escribir música en paralelo
index 3f150023c4c410042901c5c2a2fc991b750455a2..530206666c01a6a0945b16317888f96ab808374a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 5e9d7b07e1da12e32ae7be0253b22cb28cf2fe58
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -98,7 +98,7 @@ La función @code{set-paper-size} se estudia en la sección siguiente,
 @code{\paper} variables que se ocupan de la disposición de la página
 se estudian en secciones posteriores.  Las definiciones de elementos
 de marcado que se encargan de los encabezamientos, pies y títulos se
-estudian en @ref{Encabezamientos pies y títulos personalizados}.
+estudian en @ref{Cabeceras pies y títulos personalizados}.
 
 Casi todas las variables de @code{\paper} funcionan solamente dentro
 de un bloque @code{\paper}.  Las pocas que funcionan también en un
@@ -144,7 +144,7 @@ El equivalente de Scheme del ejemplo anterior es:
 @seealso
 Referencia de la notación:
 @ref{Tamaño del papel y escalado automático},
-@ref{Encabezamientos pies y títulos personalizados},
+@ref{Cabeceras pies y títulos personalizados},
 @ref{El bloque \layout}.
 
 Archivos instalados:
@@ -959,6 +959,7 @@ Si quiere que la música comience en la página 1 debe haber
 una página en blanco en el reverso de la página de cubierta
 de manera que la página 1 esté en el lado derecho.
 
+
 @node Variables de \paper diversas
 @unnumberedsubsubsec Variables de @code{\paper} diversas
 @translationof Miscellaneous \paper variables
@@ -1822,6 +1823,7 @@ controla mediante variables de @code{\paper} que se estudian en
 * Propiedades de espaciado dentro de los sistemas::
 * Espaciado de pautas no agrupadas::
 * Espaciado de pautas agrupadas::
+* Espaciado de las líneas que no son pautas::
 @end menu
 
 
@@ -2284,7 +2286,9 @@ Referencia de funcionamiento interno:
 @rinternals{StaffGrouper}.
 
 
+@node Espaciado de las líneas que no son pautas
 @unnumberedsubsubsec Espaciado de las líneas que no son pautas
+@translationof Spacing of non-staff lines
 
 Las @emph{Líneas que no son pautas} (tales como @code{Lyrics},
 @code{ChordNames}, etc.) son contextos cuyos objetos de presentación
index 3d6c6be0ee5d1a89fe45563c95e72524e2775c64..2442f9112f4aeef362ae045668680d00cbf8eae8 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index a576c9f3b20363f70544b87a14cf71753f1da449..12b55720457ce591acef2458aa27b0f6c80789c4 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 8656e359d629aed6990bb8d8d3da8eac2d2c311e
+    Translation of GIT committish: 40b0e2041fc67f6dca2b2d70717ac424919e89f7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -1037,9 +1037,9 @@ Referencia de funcionamiento interno:
 @unnumberedsubsubsec Citar otras voces
 @translationof Quoting other voices
 
-@cindex guías
+@cindex guía, voces
 @cindex citar otras voces
-@cindex fragmentos
+@cindex fragmentos, citar
 @cindex notas guía
 
 @funindex \addQuote
@@ -1049,40 +1049,37 @@ Referencia de funcionamiento interno:
 @funindex \transposition
 @funindex transposition
 
-Es muy frecuente que una voz duplique música de otra voz.  Por
-ejemplo, los violines primero y segundo pueden tocar las mismas notas
-durante un pasaje musical.  En LilyPond esto se hace dejando que una
-voz @emph{cite} a la otra, sin tener que volverla a introducir.
+Es muy frecuente que una voz use las mismas notas que otra voz.  Por
+ejemplo, los violines primero y segundo tocando la misma frase durante
+un determinado pasaje musical.  Esto se hace dejando que una voz
+@emph{cite} a la otra, sin tener que volver a introducir la música
+para la segunda voz.
 
-Antes de que una voz pueda citarse, se debe usar la instrucción
-@code{\addQuote} para iniciar el fragmento citado.  Esta instrucción
-se debe usar en el ámbito del nivel más alto.  El primer argumento es
-una cadena identificativa, y el segundo es una expresión musical:
-
-@example
-flute = \relative c'' @{
-  a4 gis g gis
-@}
-\addQuote "flute" @{ \flute @}
-@end example
+La instrucción @code{\addQuote}, utilizada en el ámbito del nivel
+sintáctico superior, define un flujo de música desde el que es posible
+citar fragmentos.
 
 La instrucción @code{\quoteDuring} se usa para indicar el punto en que
-comienza la cita.  va seguido por dos argumentos: el nombre de la voz
+comienza la cita.  Va seguida por dos argumentos: el nombre de la voz
 citada, tal y como se definió con @code{\addQuote}, y una expresión
-musical que indica la duración de la cita, normalmente silencios de
-separación o silencios multicompás.  La música correspondiente
-(incluidas todas las articulaciones,
-matices, elementos de marcado, etc.) de la
-voz citada se inserta dentro de la expresión musical:
+musical que indica la duración de la cita.
 
 @lilypond[verbatim,quote]
-flute = \relative c'' {
-  a4 gis g->\f gis^\markup{quoted}
+fluteNotes = \relative c'' {
+  a4 gis g gis | b4^"quoted" r8 ais\p a4( f)
 }
-\addQuote "flute" { \flute }
 
-\relative c' {
-  c4 cis \quoteDuring #"flute" { s2 }
+oboeNotes = \relative c'' {
+  c4 cis c b \quoteDuring #"flute" { s1 }
+}
+
+\addQuote "flute" { \fluteNotes }
+
+\score {
+  <<
+    \new Staff \with { instrumentName = "Flute" } \fluteNotes
+    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
+  >>
 }
 @end lilypond
 
@@ -1092,73 +1089,92 @@ multicompás, se produce una situación de polifonía, lo que no suele
 ser deseable:
 
 @lilypond[verbatim,quote]
-flute = \relative c'' {
-  a4 gis g gis
+fluteNotes = \relative c'' {
+  a4 gis g gis | b4^"quoted" r8 ais\p a4( f)
 }
-\addQuote "flute" { \flute }
 
-\relative c' {
-  c4 cis \quoteDuring #"flute" { c4 b }
+oboeNotes = \relative c'' {
+  c4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a }
+}
+
+\addQuote "flute" { \fluteNotes }
+
+\score {
+  <<
+    \new Staff \with { instrumentName = "Flute" } \fluteNotes
+    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
+  >>
 }
 @end lilypond
 
-Las citas reconocen los ajustes de transposición de los instrumentos
-tanto para la fuente como para los instrumentos de destino si se
-utiliza la instrucción @code{\transposition}.  Para ver más detalles
-sobre @code{\transposition}, consulte @ref{Transposición de los instrumentos}.
+La instrucción @code{\quoteDuring} usa los ajustes de
+@code{\transposition} tanto de la parte citada como de la que cita,
+para producir notas que tienen la misma altura de sonido en la parte
+que cita y en las de la parte citada.
 
 @lilypond[verbatim,quote]
-clarinet = \relative c'' {
+clarinetNotes = \relative c'' {
   \transposition bes
-  a4 gis g gis
+  \key d \major
+  b4 ais a ais | cis4^"quoted" r8 bis\p b4( f)
 }
-\addQuote "clarinet" { \clarinet }
 
-\relative c' {
-  c4 cis \quoteDuring #"clarinet" { s2 }
+oboeNotes = \relative c'' {
+  c4 cis c b \quoteDuring #"clarinet" { s1 }
 }
-@end lilypond
-
-Es posible etiquetar las citas con nombres exclusivos para poder
-procesarlas de diferentes maneras.  Para ver más detalles sobre este
-procedimiento, consulte @ref{Uso de etiquetas}.
 
-También es posible ajustar qué objetos de la voz original se citan
-mediante la modificación de la propiedad @code{quotedEventTypes}.  De
-forma predeterminada, su valor es @code{#'(StreamEvent)}, lo que
-significa que todo se cita.  Su establecimiento a,
-p.ej. @code{#'(note-event rest-event tie-event)} provoca que LilyPond
-cite solamente las notas, silencios y ligaduras de unión, pero no las
-articulaciones, los elementos de marcado ni los matices dinámicos.
+\addQuote "clarinet" { \clarinetNotes }
 
-@lilypond[verbatim,quote]
-clarinet = \relative c'' {
-  a4 gis g->\f gis^\markup{quoted}
-}
-\addQuote "clarinet" { \clarinet }
 
-\relative c' {
-  \set Score.quotedEventTypes = #'(note-event rest-event tie-event)
-  c4 cis \quoteDuring #"clarinet" { s2 }
+\score {
+  <<
+    \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes
+    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
+  >>
 }
 @end lilypond
 
-@snippets
-
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
-{quoting-another-voice-with-transposition.ly}
-
 @cindex note-event
 @cindex articulation-event
 @cindex dynamic-event
 @cindex rest-event
+@cindex slur-event
+@cindex crescendo-event
 
 @funindex quotedEventTypes
 @funindex quotedCueEventTypes
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
-{quoting-another-voice.ly}
+De forma predeterminada, la música citada incluye todas las
+articulaciones, matices dinámicos, elementos de marcado, etc. de la
+expresión citada.  Es posible elegir cuáles de estos objetos de la
+música que se cita se imprimen, mediante la propiedad de contexto
+@code{quotedEventTypes}.
 
+@lilypond[verbatim,quote]
+fluteNotes = \relative c'' {
+  a2 g2 |
+  b4\<^"quoted" r8 ais a4\f( c->)
+ }
+
+oboeNotes = \relative c'' {
+  c2. b4 |
+  \quoteDuring #"flute" { s1 }
+}
+
+\addQuote "flute" { \fluteNotes }
+
+\score {
+  <<
+    \set Score.quotedEventTypes = #'(note-event articulation-event
+                                     crescendo-event rest-event
+                                     slur-event dynamic-event)
+    \new Staff \with { instrumentName = "Flute" } \fluteNotes
+    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
+  >>
+ }
+@end lilypond
+
+Las citas también se pueden etiquetar, véase @ref{Uso de etiquetas}.
 
 @seealso
 Referencia de la notación:
@@ -1169,26 +1185,24 @@ Fragmentos de código:
 @rlsr{Staff notation}.
 
 Referencia de funcionamiento interno:
+@rinternals{Music classes},
 @rinternals{QuoteMusic},
 @rinternals{Voice}.
 
+Archivos de inicio:
+@file{scm/define-event-classes.scm}.
 
-@knownissues
 
+@knownissues
 Sólo el contenido de la primera voz de una instrucción
-@code{\addQuote} se tiene en cuenta para la cita, de manera que la
-música no puede contener enunciados @code{\new} ni @code{\context
-Voice} que cambiarían a una voz distinta.
-
-La cita de notas de adorno no es funcional e incluso puede hacer que
-LilyPond termine de forma abrupta.
-
-La cita de unos tresillos dentro de otros puede dar como resultado una
+@code{\addQuote} se tiene en cuenta para la cita, de manera que
+la expresión musical no puede contener enunciados @code{\new}
+ni @code{\contextVoice} que cambiarían a una voz distinta.
+La cita de notas de adorno no está contemplada y puede hacer que
+LilyPond termine de forma abrupta; la cita de unos tresillos
+dentro de otros puede dar como resultado una
 notación de pobre calidad.
 
-En anteriores versiones LilyPond (antes de la 2.11), @code{addQuote}
-se escribía completamente en minúsculas: @code{\addquote}.
-
 
 @node Formateo de las notas guía
 @unnumberedsubsubsec Formateo de las notas guía
@@ -1200,42 +1214,111 @@ se escribía completamente en minúsculas: @code{\addquote}.
 @cindex guía, notas, formato de
 @cindex fragmentos
 @cindex citar otras voces
+@cindex voces, citar
+
 
 @funindex \cueDuring
 @funindex cueDuring
+@funindex \cueClef
+@funindex cueClef
+@funindex \cueDuringWithClef
+@funindex cueDuringWithClef
 @funindex \quoteDuring
 @funindex quoteDuring
 
-La sección anterior explica la forma de crear citas.  La instrucción
-@code{\cueDuring} es una forma más especializada de
-@code{\quoteDuring}, que es especialmente útil para insertar notas
-guía en una particella.  La sintaxis es como sigue:
+@cindex notas pequeñas
+@cindex pequeñas, notas
+@cindex CueVoice
+
+La manera más sencilla de dar formato a las notas guía es crear
+explícitamente un contexto @code{CueVoice} dentro de la parte.
+
+@lilypond[verbatim,relative=1]
+R1
+<<
+  { e2\rest r4. e8 }
+  \new CueVoice {
+    \stemUp d'8^"flute" c d e fis2
+  }
+>>
+d,4 r a r
+@end lilypond
+
+La instrucción @code{\cueClef} puede usarse también con un contexto
+@code{CueVoice} explícito si se requiere un cambio de clave, e
+imprimirá una clave del tamaño adecuado para las notas guía.  Después
+puede utilizarse la instrucción @code{\cueClefUnset} para volver a la
+clave original, de nuevo con un signo de clave del tamaño adecuado.
+
+@lilypond[verbatim,noragged-right,relative=1]
+\clef "bass"
+R1
+<<
+  { e2\rest r4. \cueClefUnset e,8 }
+  \new CueVoice {
+    \cueClef "treble" \stemUp d''8^"flute" c d e fis2
+  }
+>>
+d,,4 r a r
+@end lilypond
+
+Las instrucciones @code{\cueClef} y @code{\cueClefUnset} se pueden
+usar también sin un @code{CueVoice} si es necesario.
+
+@lilypond[verbatim,noragged-right,relative=1]
+\clef "bass"
+R1
+\cueClef "treble"
+d'8^"flute" c d e fis2
+\cueClefUnset
+d,,4 r a r
+@end lilypond
+
+En casos de colocación de mayor complejidad de notas guía, por ejemplo
+con transposición o insertando notas guía procedentes de más de una
+fuente, pueden usarse las instrucciones @code{\cueDuring} o
+@code{\cueDuringWithClef}.  Son una forma más especializada de
+@code{\quoteDuring}, véase @ref{Citar otras voces} en la sección
+anterior.
+
+La sintaxis es:
+
+@example
+\cueDuring #@var{nombre_de_la_cita} #@var{dirección} #@var{música}
+@end example
+
+y
 
 @example
-\cueDuring #@var{nombre_de_la_parte} #@var{voz} @var{música}
+\cueDuringWithClef #@var{nombre_de_la_cita} #@var{dirección} #@var{clave} #@var{música}
 @end example
 
-Esta instrucción copia sólo las notas y los silencios de los compases
-correspondientes a partir de @code{@var{nombre_de_la_parte}} dentro de
-un contexto @code{CueVoice} de voz guía.  La voz guía @code{CueVoice}
-se crea implícitamente, y se produce simultáneamente con
-@code{@var{música}}, lo que crea una situación polifónica.  El
-argumento @code{@var{voz}} determina si la notación de las notas guía
-debe ser como primera o como segunda voz; @code{UP} (arriba)
-corresponde a la primera voz, y @code{DOWN} (abajo) corresponde a la
-segunda.
+La música procedente de los compases correspondientes del elemento
+@code{@var{nombre_de_la_cita}} se añade como un contexto
+@code{CueVoice} y ocurre simultáneamente con la @code{@var{música}},
+lo que produce una situación polifónica.  La @code{@var{dirección}}
+toma un argumento @code{UP} (arriba) o @code{DOWN} (abajo), y
+corresponde a las voces primera y segunda, respectivamente,
+determinando cómo se imprimen las notas guía en relación a la otra
+voz.
 
 @lilypond[verbatim,quote]
-oboe = \relative c'' {
-  r2 r8 d16(\f f e g f a)
-  g8 g16 g g2.
+fluteNotes = \relative c'' {
+  r2. c4 | d8 c d e fis2 | g2 d |
 }
-\addQuote "oboe" { \oboe }
 
-\new Voice \relative c'' {
-  \cueDuring #"oboe" #UP { R1 }
+oboeNotes = \relative c'' {
+  R1
+  s1*0^\markup { \tiny "flute" }
+  \cueDuring #"flute" #UP { R1 }
   g2 c,
 }
+
+\addQuote "flute" { \fluteNotes }
+
+\new Staff {
+  \oboeNotes
+}
 @end lilypond
 
 @noindent
@@ -1253,11 +1336,11 @@ pero no las articulaciones, marcas dinámicas, elementos de marcado,
 etc.
 
 @lilypond[verbatim,quote]
-oboe = \relative c'' {
+oboeNotes = \relative c'' {
   r2 r8 d16(\f f e g f a)
   g8 g16 g g2.
 }
-\addQuote "oboe" { \oboe }
+\addQuote "oboe" { \oboeNotes }
 
 \new Voice \relative c'' {
   \set Score.quotedCueEventTypes = #'(note-event rest-event tie-event
@@ -1270,13 +1353,15 @@ oboe = \relative c'' {
 
 Se pueden usar elementos de marcado para imprimir el nombre del
 instrumento citado.  También, si las notas guía requieren un cambio de
-clave, la clave original se debe restaurar al final de las notas guía.
+clave, puede hacerse manualmente pero la clave original se debe
+restaurar al final de las notas guía.
 
 @lilypond[verbatim,quote]
-flute = \relative c'' {
+fluteNotes = \relative c'' {
   r2. c4 d8 c d e fis2 g2 d2
 }
-bassoon = \relative c {
+
+bassoonNotes = \relative c {
   \clef bass
   R1
   \clef treble
@@ -1285,64 +1370,41 @@ bassoon = \relative c {
   \clef bass
   g4. b8 d2
 }
-\addQuote "flute" { \flute }
+
+\addQuote "flute" { \fluteNotes }
+
 \new Staff {
-  \bassoon
+  \bassoonNotes
 }
 @end lilypond
 
-@cindex quitar notas guía
-@cindex notas guía, quitar
-
-@funindex \killCues
-@funindex killCues
-
-La instrucción @code{\killCues} quita las notas guía de una expresión
-musical, de manera que la misma expresión musical se puede usar para
-producir la particella instrumental con notas guía y la partitura.  La
-instrucción @code{\killCues} elimina solo las notas y eventos que
-fueron citados por parte de @code{\cueDuring}.  Otros elementos de
-marcado asociados con las citas, como los cambios de clave y una
-etiqueta que identifique el instrumento fuente, se pueden etiquetar
-para su inclusión selectiva dentro de la partitura; véase
-@ref{Uso de etiquetas}.
+De forma alternativa, puede usarse la función
+@code{\cueDuringWithClef} en su lugar.  Esta instrucción admite un
+argumento adicional para especificar el cambio de clabe que se
+necesita imprimir para las notas guía, pero después imprime
+automáticamente la clave original una vez que ha finalizado la serie
+de notas guía.
 
 @lilypond[verbatim,quote]
-flute = \relative c'' {
+fluteNotes = \relative c'' {
   r2. c4 d8 c d e fis2 g2 d2
 }
-bassoon = \relative c {
+
+bassoonNotes = \relative c {
   \clef bass
   R1
-  \tag #'part {
-    \clef treble
-    s1*0^\markup { \tiny "flute" }
-  }
-  \cueDuring #"flute" #UP { R1 }
-  \tag #'part \clef bass
+  s1*0^\markup { \tiny "flute" }
+  \cueDuringWithClef #"flute" #UP #"treble" { R1 }
   g4. b8 d2
 }
-\addQuote "flute" { \flute }
+
+\addQuote "flute" { \fluteNotes }
 
 \new Staff {
-  \bassoon
+  \bassoonNotes
 }
-\new StaffGroup <<
-  \new Staff {
-    \flute
-  }
-  \new Staff {
-    \removeWithTag #'part { \killCues { \bassoon } }
-  }
->>
 @end lilypond
 
-De forma alternativa, los cambios de clave y las etiquetas de
-instrumentos se pueden recoger dentro de una definición de instrumento
-para su uso repetido, utilizando la instrucción
-@code{\addInstrumentDefinition} descrita en
-@ref{Nombres de instrumentos}.
-
 @funindex \transposedCueDuring
 @funindex transposedCueDuring
 
@@ -1359,13 +1421,14 @@ Esto es útil para toma citas de un instrumento que está en un registro
 completamente diferente.
 
 @lilypond[verbatim,quote]
-piccolo = \relative c''' {
+piccoloNotes = \relative c''' {
   \clef "treble^8"
   R1
   c8 c c e g2
   c4 g g2
 }
-bassClarinet = \relative c' {
+
+bassClarinetNotes = \relative c' {
   \key d \major
   \transposition bes,
   d4 r a r
@@ -1373,41 +1436,77 @@ bassClarinet = \relative c' {
   d4 r a r
 }
 
-\addQuote "piccolo" { \piccolo }
+\addQuote "piccolo" { \piccoloNotes }
 
 <<
-  \new Staff \piccolo
-  \new Staff \bassClarinet
+  \new Staff \piccoloNotes
+  \new Staff \bassClarinetNotes
 >>
 @end lilypond
 
-@cindex notas más pequeñas
-@cindex pequeñas, notas más
+@cindex removing cue notes
+@cindex cue notes, removing
 
-Se puede crear un contexto de @code{CueVoice} explícitamente si se
-necesitan notas de un tamaño menor, por ejemplo para establecer una
-secuencia alternativa de notas más apropiada para una voz más aguda o
-más grave.
+@funindex \killCues
+@funindex killCues
+@funindex \addInstrumentDefinition
+@funindex addInstrumentDefinition
 
-@lilypond[verbatim,relative=2]
-\time 12/8
-\key ees \major
-g4 ees8 f4 g8
-\stemDown
-<<
-  { d4. bes4 c8 }
-  \new CueVoice
-  { g'4. f4 ees8 }
+La instrucción @code{\killCues} elimina las notas guía de una
+expresión musical, de forma que la misma expresión musical pueda
+utilizarse para producir la particella instrumental (con notas guía) y
+la partitura de conjunto.  La instrucción @code{\killCues} elimina
+solamente las notas y eventos que se han citado mediante
+@code{\cueDuring}.  Otros elementos de marcado asociados con las
+guías, como los cambios de clave o una etiqueta identificativa del
+instrumento fuente, pueden marcarse para su inclusión selectiva dentro
+de la partitura; véase @ref{Uso de etiquetas}.
+
+@lilypond[verbatim,quote]
+fluteNotes = \relative c'' {
+  r2. c4 d8 c d e fis2 g2 d2
+}
+
+bassoonNotes = \relative c {
+  \clef bass
+  R1
+  \tag #'part {
+    \clef treble
+    s1*0^\markup { \tiny "flute" }
+  }
+  \cueDuring #"flute" #UP { R1 }
+  \tag #'part \clef bass
+  g4. b8 d2
+}
+
+\addQuote "flute" { \fluteNotes }
+
+\new Staff {
+  \bassoonNotes
+}
+
+\new StaffGroup <<
+  \new Staff {
+    \fluteNotes
+  }
+  \new Staff {
+    \removeWithTag #'part { \killCues { \bassoonNotes } }
+  }
 >>
-\stemUp
-d2. d2.
 @end lilypond
 
+Como alternativa, los cambios de clave y los letreros de instrumento
+se pueden recolectar dentro de una definición de instrumento para su
+uso repetido, utilizando @code{\addInstrumentDefinition} que se
+descibe en @ref{Nombres de instrumentos}.
+
 
 @seealso
 Referencia de la notación:
+@ref{Citar otras voces},
 @ref{Transposición de los instrumentos},
 @ref{Nombres de instrumentos},
+@ref{Clave},
 @ref{Guías musicales},
 @ref{Uso de etiquetas}.
 
@@ -1423,4 +1522,6 @@ Referencia de funcionamiento interno:
 
 Pueden ocurrir colisiones con los silencios si se usa
 @code{\cueDuring}, entre los contextos de @code{Voice} y de
-@code{CueVoice}.
+@code{CueVoice}.  Al usar @code{\cueDuringWithClef} o
+@code{\transposedCueDuring} el argumento adicional requerido para cada
+caso debe ir después de la cita y de la dirección.
index 64d3e4fceb42cc986597c63242b1ae4888dfe396..c1aecb08fc9357498d5c3b47cf9528b978128b45 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 53db923e715126eb9463220526b4838fbfd3dad4
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 181ff624e8e206ac2d40c070f37cfee6a474b631..661a0450162f0e4f08e527ad4319ce10827a3746 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index df4bc97cc9a8f461c26f8701ee1793444b2dad99..ce3416cae37d8e3fd71b5e763367075cd146388f 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: a3cb316f14549de435c809a3b5cd11e7746a7a01
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -235,7 +235,7 @@ Manual de aprendizaje:
 Referencia de la notación:
 @ref{Duración automática de las sílabas},
 @ref{Tipografías},
-@ref{Foramtear el texto},
+@ref{Formatear el texto},
 @ref{Modos de entrada},
 @ref{Duración manual de las sílabas},
 @ref{Codificación del texto}.
@@ -2181,7 +2181,7 @@ el @q{modo de acordes}; esta sintaxis se explica en
 
 @seealso
 Referencia de la notación:
-@ref{Chord notation}.
+@ref{Notación de acordes}.
 
 
 @node Música coral
index 5b42e8581f4357d050bf968ed726bb55b21ee2f2..697abec3734fe1624e50819fe071d0bf85048e79 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: cc821da6e50c63beadf205719c72433460770a26
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index f018ed9ee37fe16e2869668ef4b74008828c474e..6ec67ab70556b01afc3a01ec49c63bd9b11256f0 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -229,7 +229,7 @@ alterar mediante este método.
 
 @seealso
 Referencia de la notación:
-@ref{Note names in other languages},
+@ref{Nombres de las notas en otros idiomas},
 @ref{Notación común para músicas no occidentales}.
 
 Fragmentos de código:
index a0dde284e6aa14e1b7760f7f0a9a525bb12396cc..1ab5c3b0324ec84dfae7121ae3aacf7f1ad0450d 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-    Translation of GIT committish: d4db4930cfb89a8d2f4bfa36e99e81710fa09caa
+    Translation of GIT committish: db084d94d56b4bc5dd51fee39410320c95eb4e50
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -8,11 +8,11 @@
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org +v2.12 '
+      onSubmit="search.q.value='site:lilypond.org +v2.14 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org +v2.12 '
+      onMouseMove="search.q.value='site:lilypond.org +v2.14 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org +v2.12 '
+      onKeyUp="search.q.value='site:lilypond.org +v2.14 '
               + 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 6a5f2a35f6c38a906e8ea15a603f597291bb8291..9fb4ff21e901e2943e609be47c0d9d79464bf60e 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los símbolos específicos de acordeón discanto se escriben mediante
 @code{\\markup}.  Se puede trucar la colocación vertical de los
index 4e86e17fba14c001b366e5f74e02c23f62a995c5..18ca39958e11fe9c6a86fcf8019bcd11cbe6965c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Al escribir un bajo cifrado, podemos situar las cifras encima o debajo
index 1f00ae6e7827d542d40b487ebb7be58b027b6ba8..92fd430a691642ad2560865e3a3031ab5dfa79a4 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Añadir un ámbito por voz"
   texidoces = "
 Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
index e0baad88b71ce82396b8ad90e540e63df113bd70..258a12e20fa24626b8e2fdb5ea28e159d540bc42 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al añadir un pentagrama nuevo en un salto de línea, por desgracia
 se añade un espacio adicional al final de la línea antes del salto
index c94d6e76e5a9b4a7e2788a7bb89e02bd7b201801..a39cce98f8a14ec3feaed70993221802cbe4e884 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede añadir (posiblemente de forma temporal) un pentagrama
 nuevo una vez que la pieza ha comenzado.
index bd6d48af548d9db087da70420c3842c9429d9796..4b47ac5461153a2f664e2afd1b32f47df15b0b2a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para añadir indicaciones de línea divisoria dentro del contexto de
 los nombres de acorde @code{ChordNames}, incluya el grabador
index 0fb1667e3fa77ed1a5d648dfbee022131d209fe3..701bdacf8775ddcd0d647cce11b3638345f4c6fc 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La sintaxis de LilyPond puede implicar muchas colocaciones poco
 comunes para los paréntesis, corchetes, etc, que a veces se tienen
index a6511ef1c6144ee02e1d8dad11d0f23814d0ad63..b72c1368fb77c06628a40a5d709e2a8d9ecd7de8 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Mediante la utilización de las potentes herramientas preconfiguradas
 como la función @code{\\drummode} y el contexto @code{DrumStaff}, la
index 55dd98421871db3ca8c29016a0db8d643274fce5..366ca0834b349a89addbf2fa21e5e21f378b18cd 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para añadir digitaciones a las tablaturas, utilice una combinación de
 @code{\\markup} y @code{\\finger}.
index 78aca100df53a1fb17045e8f9d5d173aaf51cbca..c48503ecf7cf09bbf416555fccd23ac292b8fe07 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
    Este ejemplo muestra una forma de simplificar la adición de muchas
index d764b087f16897cc00d929391a3ce1d25786f2a8..2ffbaeef48f881427bfdb1bca0e8ef42c6b50b89 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La función @code{\\parenthesize} es un truco especial que encierra
 objetos entre paréntesis.  El grob asociado es @code{ParenthesesItem}.
index 7ac744d71dc17baf8a0fc7fd85ffd743ce8f8bc0..836100d6550de9269e912c59df0bc1f861478e7f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Con algo de código de Scheme, se puede añadir fácilmente la fecha
 actual a una partitura.
index 97587b461cc77489d9f8242ab6c3b4b12bda6650..9a0c6f288b9c2dbbfea65c3f7592d9056ddfec20 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El grabador @code{Volta_engraver} reside de forma predeterminada
 dentro del contexto de @code{Score}, y los corchetes de la repetición
index 877986f4a0157040809f9d1c2c75caee0e02ae87..0dd4ef59ec91aa719c5ece508d6c8cfecb977295 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Voces adicionales para evitar colisiones"
  texidoces = "
 En ciertos casos de polifonía compleja, se necesitan voces adicionales
index 8d34263a836787a56650571e20ddbbb8d8dd9bad..152219b4957d21a74537c80de2e75b58a11eef13 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede ajustar la separación entre las notas de adorno utilizando la
 propiedad @code{spacing-increment} de @code{Score.GraceSpacing}.
index d12e9b7075376c70156f21dbcc86f55816e3e55a..4a9bd1334b9292b91c153b12893af5d2057ef51f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código muestra cómo situar la línea de base de la
 letra más cerca del pentagrama.
index a5f821393dc82f137550c1bec6001b06380686ac..d6f53e8f1d6a26e6c9ff7ee6a17a9175e2debdb4 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Puede ser necesario trucar la propiedad
 @code{shortest-duration-space} para poder ajustar el tamaño de las
index f58b114aa507c697d66690b271469ff84dee3453..92c96473bf4bf2ea913df1155c9312bf862f8ab0 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La alineación horizontal de los nombres de instrumento se puede
 trucar modificando la propiedad @code{Staff.InstrumentName
index 11ee046b9192c2256e8d5c961f03f1129d24cb26..27b856b8a3447885629dfc5afc8626f3579905e2 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los números de compás se alinean de forma predeterminada por la
index 17f28039c79bd54d635fdb6d62cf347f6a7e6406..5a2d6f851f8f1c1122038ee974d2a69f086a3221 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si están especificadas, las marcas de texto se pueden alinear con
 objetos de notación distintos a las líneas divisorias.  Entre estos
index bc728c534806b5759b7670e81c99e88c7afbae5a..2f198c877aad0c309bb876465b6af744a0b561cd 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Las cifras de digitación orientadas verticalmente se colocan de forma
index f434045a52f4c8327d1358fc2847b63b405f947d..08f93b1ea5c526fa5f73245aa300cf4f634429ee 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede variar la longitud de las plicas de las figuras unidas por
 una barra mediante la sobreescritura de la propiedad
index 3474679172b2f4d72329592d48730d16f67f8643..5aa054a4006cf2c416e5b44e89794276a8dac730 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Ámbitos con varias voces"
   texidoces = "
 La adición del grabador @code{Ambitus_engraver} al contexto de
index ab20f2f3952af562647ce2c22b97e20771ab5b36..906b9fbed3f43ae72e5aa6128b9e41d291a714f6 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada se añaden corchetes de análisis sencillos
 debajo del pentagrama.  El ejemplo siguiente muestra una manera de
index 23b7f135ac2c297e2bf94e654851b0b9bf266138..e37e2f3c53ab71463461f1846d47d4b3f3f58a00 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aquí se muestran muchos de (¿o quizá todos?) los símbolos que
 están contemplados por la capacidad de LilyPond para la música
index 815d180cb70560a8c874ea28cf5724cc67e6328d..3097e2872ae8abfd88fc08e6bd16016b2247aa3b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este ejemplo muestra cómo hacer una transcripción moderna de canto
 gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza
index 4c39bf7c1cf9ff660540c89cbd3c82917ab2532d..7bc2956a72ea46a70208dbced6d8fe2a6f2cb485 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al transcribir música mensural, es útil un «incipit» al compienzo
 de la pieza para indicar la tonalidad y el tempo
index 28b3f3d8eda6993b3e3bf00e6f883fb50bf1d507..ba64c283e7408333de555618f3a9b6db4687ed4f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las indicaciones de compás también se pueden grabar en estilo antiguo.
 
index ac78c31791c2f275b6d1a0c71c4f8fd53db140b7..4436253d66683d2696bed339e6d7437a28b22b88 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Aplicar estilos de cabeza según la nota de la escala"
   texidoces = "
 La propiedad @code{shapeNoteStyles} se puede usar para definir varios
index 303c5087051094231825f4548d35e09ac376d6e9..b415575061fc50cba06a639a3b367d8dd8d5e691 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para las improvisaciones o @emph{taqasim} que son libres durante unos
 momentos, se puede omitir la indicación de compás y se puede usar
index 8d1c86cd4ea59057e4e22a30e6b758e8e8db8167..e3e56dd9ca32dbf6807d19875880872a0cf5ce22 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede hacer que una ligadura de expresión sea asimétrica para
 adaptarse mejor a un patrón asimétrico de notas.
index 1671983b7506f6dd5f7ee5aa401f9b7c860be41a..f93bf31e4f5d7441c661bbd76bfa72e7cf6ac34f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden subdividir las barras automáticamente.  Estableciendo la
 propiedad @code{subdivideBeams}, las barras se subdividen en
index e1fa21dc60fc50cea05b5c83e628f275c9c77dc9..9e4df190f6351274371b83747456c5491b078b55 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 54a18ba499b3fea0fe555ec87b5d843e3c4562cb..d2d6ce7cb829823d6522f2d2613a454687bbad05 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las reglas de final de barra especificadas en el contexto
 @code{Score} se aplican a todos los pentagramas, pero se pueden
index bf850e88bd166ceea89a1e79dd9d6592c6fe8135..52431fc72000d9ff971b09910ee525470cc19a49 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 No está especificada ninguna agrupación predeterminada automática
 de las barras para el compás de 7/8, de forma que si se requieren
index be52b86006d9fecac0e3b6372d159f7138636b82..bbdc1dbde8309a1888df5d5236a29017de293b88 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Normalmente están prohibidos los saltos de línea si las barras
 atraviesan las líneas divisorias.  Se puede cambiar este
index f4660a5482e0f6e8f95094e78e09d53c06248143..600e1701eecabd4eb6e132ed3a062aa338f004ab 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La instrucción @code{\\whiteout} intercala un rectángulo blanco
 debajo de un elemento de marcado.  Este rectángulo blanco no tapa
index b08fff2745bcd3778adb49ba0f118b31747ee577..9b41f37e99691bf59ecee3ffd367bc7dc693517b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para hacer invisibles partes de un regulador de crescendo, se usa
 el método de dibujar un rectángulo blanco encima de la parte
index e02418e940fef23d963e9504b772a30275afd019..59636e3030755aed3dbe5cb838f2392f635b3f2d 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 A veces se denota una «cesura» mediante una doble marca de respiración
 parecida a las vías del tren, con un calderón encima. Este fragmento
index 6ed9bf75a6fa2410c776484c3613ebb4031ba351..4140b86af6fb6fe5ba23d16a78aa1f542a6e3250 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este ejemplo proporciona una función para tipografiar un regulador con
 texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra
index eacf1ab36a07ff562bd89928cecc1698c75a5075..79e34b312e1bd5c3b8a14f20201ce6d45d2819c2 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para hacer más pequeño el círculo de @code{\\flageolet} (armónico)
 utilice la siguiente función de Scheme.
index ef0fe4f6f4fe879f314c405face4fb2d2f27a8ab..bc84af3aaa43eb4d52d6308e0f975555bb8e927c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden modificar notas individuales de un acorde con la instrucción
 @code{\\tweak}, alterando la propiedad @code{font-size}.
index c8baea3a50ce80345080250c9e85583ed40aba5e..276d362078359e234a13c43cc8fc5e21fc7cb9b3 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se insertan automáticamente barras en ángulo cuando se detecta un
 intervalo muy grande entre las notas.  Se puede hacer un ajuste
index 45214f0d47a6895d5987a15ccef746b9f6ef77f2..f42c2c165c36641862d43292135a1e0495a9873f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede establecer el separador entre las distintas partes del
 nombre de un acorde para que sea cualquier elemento de marcado.
index 98538a917aba0a8d8170a8a96668842d6b606e18..4f7fb8f5e38153bd7cc0853f85803dca6bda35de 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Cambiar la forma de los silencios multicompás"
  texidoces = "
 Si hay diez compases de silencio o menos, se imprime en el pentagrama
index 3744ff66328681339eb8334d9e7116a7b451381e..364e4c9a3deb389dcc22afb547d99da79b3248e2 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 04d12a9107bfdcbd821f35f16b77c4030c648b52..cc1454bfd524d68f9261d63494366a06ce06247c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al producir una salida MIDI, el comportamiento predeterminado es que
 cada pentagrama representa un canal MIDI, con todas las voces de dicho
index f814b538f0b974185d0a1a96e5e61fa7ff84be1d..c9fd03415c3b5d6da0e995e848b3caa48f4241e5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al utilizar la posibilidad de combinación automática de partes, se
 puede modificar el texto que se imprime para las secciones de solo
index d8016d904cf8976ebd9fa90010c7c9b695a8f642..66138d059a7baf129635d7d891c4f17f32892aba 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede modificar el texto empleado para los crescendos y
 decrescendos modificando las propiedades de contexto
index 0da022fa331c07c70399d3cccfcc1f734371aa71..f1366e246ef2d69da918b6a4a5778a1a3d585465 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Es posible ajustar la separación en las indicaciones de tesitura.
index 7fd7000c0ec4f969f1f3923f5e3951e727291dff..410e58292adc0b81862de2df1b25339e78fe31c0 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede cambiar el aspecto de las ligaduras de expresión de
 continuas a punteadas o intermitentes.
index 6d77b12cd05c56405dd8ca94cb94dd29644ef405..98da5e41af51cb23eb294bf5f5db901ece79996a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El glifo de la marca de respiración se puede ajustar
 sobreescribiendo la propiedad de texto del objeto de presentación
index ccb86e58bb1b6efdfde2cde6ce9e7cb4cf804913..c6f795dc63803b1f4670e915c269b70a4aa33c64 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La nomenclatura inglesa (predeterminada) para los acordes del cifrado
 americano se puede cambiar por la alemana (@code{\\germanChords}
index bcee3b51fc32aa5c5d2a91fdec9cd0df42fb221d..b71ccf439ee5731d3c76462a5abc82d679ec7220 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Este código muestra cómo cambiar la cantidad de puntillos de una nota.
index bb7d2285d690bc55029f9b2e43aec1ceaefb56ba..e73314e2c28c44bbc6c48f499715ea799a7f1a70 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las alteraciones y los signos «más» pueden aparecer antes o
 después de los números, según el valor de las propiedades
index 333eedc32859c944a45f63dfd927b56921e26a90..4151464a79df02ea125241c15554b1bb5298038f 100644 (file)
@@ -1,4 +1,4 @@
-%%%    Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 2317c49ee987615c70b8fc72751a30cf5d939f4c..05e8ab8c9a43fdcf5bc5cb035448360e82dc00ee 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para cambiar el tempo en la salida MIDI sin
 imprimir nada, hacemos invisible la indicación metronómica:
index 8867575b20ae09f627f55aff9b4eaa1fb351ba10..9ae52b590a8359df36d0c71923793a792dd47cc0 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de
 las indicaciones de pisar pedal y levantar pedal.  Observe que las
index ad757a2c0eab1e50f75ee86b574293c046b5bcb5..9ea804e56eece4d403781b09767d4c315c58f794 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La instrucción @code{\\time} establece las propiedades
 @code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y
index 7dfc8ba3b84b37916e645a061f51ae5238cc24ec..ff1183169e5d430428f4b4c52790ca6b03022138 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Cambiar el número del grupo especial"
  texidoces = "
 
index 465c6733f8599f8e3ac2ffdd06c679be38e84388..0724adcb6d5fafc31074229b5a6950509d66264c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La propiedad @code{measureLength}, junto con
 @code{measurePosition}, determina cuándo es necesario dibujar una
index 37e41c9c757e37b8dce240f6f3f3742ed5bc3c0a..0c228101d3b128bb536e1917a5c17dace19a87b3 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este tipo de notación se utiliza para el canto de los Salmos, en
 que las estrofas no siempre tienen la misma longitud.
index de88f42623cb059da598db827c7b831fc7dc6d13..2dc6c2cb1e01a8f0687af2e6f76a2e124f16c8be 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Los deslizamientos para acordes se pueden indicar tanto en el contexto
index 171e5c5b8d45df828634e6710566e5a94253c64b..154deedf67d75921f99ba2bee7ffbf726114b8eb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar la propiedad @code{chordNameExceptions} para
 almacenar una lista de notaciones espaciales para acordes
index 961522aca834b5ccacea40f0fae07f548b586cd7..03433bea202d4ff69aaeb339e2a3844712c39ebc 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La presentación del acorde de séptima mayor se
 puede ajustar mediante majorSevenSymbol.
index 243860a6239eddda67a969c46ea6277e74d23b54..9fb140f7973bc5eaeba8b62358e46b7759ae92b4 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede hacer que los diagramas de posiciones se muestren sólo
 cuando el acorde cambia o al comienzo de una nueva línea.
index a02bfefc0ed9e63e32815fddc25e5e3cf6829e1b..ae96606b1a1e75b4844d60ca5cbdd1da1f0e5352 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este código muestra cómo recortar (extraer) fragmentos a partir de una
 partitura completa.
index e08d62d488ef903364c561f45bf89099b849fb69..cb7239c991e200266cf9ea392db6961c4026085c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los «clusters» o racimos son un mecanismo para indicar la
 interpretación de un ámbito de notas al mismo tiempo.
index 4c2dc3775b9f6e8dbc1c4d1ec1fe7ba5b97a6fc1..870433a0725d840074ae55969b20781f696c0eeb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più
 forte} o @qq{piano subito}). Se pueden producir usando un bloque
index 47e15dd42c7ad9d79af69544885b656900aa0b8d..ac97cf3ae1dfe0ae258dfbbbc718087649c20a50 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 La herramienta de combinación de partes (instrucción
index 64dec028170205a579a66e4495846fe16f0f8e29..881efd23d52a0d2f057603849b9db170dbf8ff0b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Indicaciones de compases compuestos"
  texidoces = "
 Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden
index cba84750fe5102615a7c0e0c61eff0b917d87667..09b549204575400bd4e68e9437cc3dec4bb92910 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La agrupación de pulsos dentro de un compás está controlada por la
 propiedad de contexto @code{beatStructure}.  Hay establecidos valores
index e93ef8e00ce60ffe01fb349c9d95f4b3be9779cd..2232ac890c3e6e08b31603e807c708d6a5d1706c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede tipografiar un gissando contemporáneo sin nota final
 utilizando una nota oculta y temporalización de cadenza.
index 6947356e1f0793787706a83d8c7628ee420514ce..93f477b8454cbb28aeec3e6f66986ce7ea09fbac 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 La visibilidad de los objetos de extensión que acaban en la primera
index feed3ce3c606c45ff87908e918c37bc786cd04a8..6f429ad79f6e99631f5fbb496cf25e29a157b69f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede controlar con precisión la colocación de los números de
 digitación.  Para que se tenga en cuenta la orientación de las
index c8efb34e077deadfb68886ec54521dbaafff6a93..b70bed46e5802766d9df668ec0c7945894b394a5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El orden vertical que ocupan las inscripciones gráficas está
 controlado con la propiedad @code{'script-priority}. Cuanto más
index 4ff0544b59d585d0664904d09601782dd381fe3d..f17273b3641b593f22bb1df16234c97fd060810e 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 El comportamiento predeterminado de la visibilidad de los corchetes de
index b94ab023bbd2fe98e430c656d6be1a2435514e61..a348322e870ce8bc5be3188a0542cbd0114e34e2 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 texidoces = "
 La creación de un grupeto circular de anticipación entre dos notas,
 donde la nota inferior del grupeto utiliza una alteración, requiere
index 69ec5d38b32a09cb577586011709c049f44e5ad0..03471abccfd82fcb06435c9361c17d3cdcc2faca 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En una música que tenga muchas apariciones de la
 misma secuencia de notas a distintas alturas, podría ser de
index 9c6df1902f4dd06627e365a503374b7dcaea8329..7dabb8dc8d44dfcebf59f757af1f3ce9dd551530 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede trazar un símbolo de arpegio entre notas de distintas
 voces que están sobre el mismo pentagrama si el grabador
index 009f9f6d4322b190b35b173b08ffa3ffafd549e9..9c50d2126b742ddb3f615856ccba1689123ea51a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para crear pentagramas en blanco, genere compases vacíos y después
 elimine el grabador de números de compás @code{Bar_number_engraver}
index 82390ad449fd7b1988a848ad181518667f8b30c8..85fd19e7f8cb7fdab7a6d15cffd6594031294e70 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
 cruce entre los pentagramas ajustando la propiedad
index 7656904afe83306bfa84ace4da9966d8aeff0446..731e9fcaa40b9a5684ae25328144dad5fb3cd068 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden crear arpegios que se cruzan entre pentagramas dentro de
 contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
index 5ca0a7964db3fb152b9bdca307e3a111e0a381b9..acd3997ab9e6b9e28a8fcf55d7530263b7c0da32 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden crear indicaciones metronómicas nuevas en modo de
 marcado, pero no cambian el tempo en la salida MIDI.
index 65235e26b4cfaed6f932f23c147dfb9d94ec5856..bf2f06676e5a3e10bba8caaf77daa99f2b16d2da 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aunque la manera más fácil de añadir paréntesis a una indicación
 de dinámica es utilizar un bloque @code{\\markup}, este método
index 44b8741f417def7673a05f66b5e9cfd011f9f952..971bf61ae43c9f6d5a0bde992833f2092c218eea 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 A diferencia de las inscripciones de texto, las lestras de ensayo
 no se pueden apilar en un punto concreto de la partitura: sólo se
index 69a6d2e75e2e8badd3a0c6251888b16eaf4b6a3d..055d84dc3add740dfb5748c2f9c532d3c2f92253 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En determinadas situaciones es necesario crear ligaduras de
 expresión entre notas que están en voces distintas.
index a0fcd8c4dd34508d39c28951936ed6ed212f157c..266d39351fd2baa97990e0866bfdd4dce81f79cc 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan}
 permiten la creación de elementos de extensión textuales tan
index 54008369f3fedbec5da0c374686cbb618202dd4a..14cc10619f03e22e3d11934ebcf04258b57d1292 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 7d6e56cfb6faceae4c76bfd6a251841cba20f91d..81c28b026250daddb549a2964cf573365deac90a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden tipografiar «custos» en diferentes estilos.
 
index 02b1605e585961c2e886c535ba2edec0b7da2f4c..22fe63c75ff389b1ef84e722973f30f06cbe77bc 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones de acordes por medio de @code{'fret-diagram-details}.
index e7f8755c1273a9044c28b95e3fecb7d59cfdbfd0..b6247b1353ba1347807186d76bed09578366d101 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones a través de @code{'fret-diagram-details}.  Para los
index 36ef3e62cf6bbc06db9da0cecbc555e4e2934bb4..e97fb8f92beaf19d8e1732029563d7301f6dff45 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La dirección predeterminada de las plicas sobre la tercera línea
 del pentagrama está determinada por la propiedad
index 5178d031445c303c8a02f831d1af60889c8028fe..03e1447f6fe7c80cd0e0551cc93d66db071cef95 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
index 42e58df829fb05da64b76bdfbfcb2fa8bfb16f97..b6eaece6e85cf5e5b1b14d9b6ce80bdb1177ca84 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden añadir diagramas de posiciones predefinidas para
index 3f324eafc40c57836c847e33efe97fa83eb0e3a6..3cfb5ddd3471c8e53bc2499b738f483e7e457d57 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si hay un solo pentagrama en un de los tipos de sistema
 @code{ChoirStaff} o @code{StaffGroup}, el comportamiento
index 87acc19c39188897fe9f787eeac131e269cd146d..40b01567826436859690ef1f69ae77fe81885c48 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 He aquí una forma de imprimir un acorde en el que suena la misma nota
index f693344dabae27f873f983d7fd9f2d48300a0726..33c79387e4e7256f8ca5e96d417f0fa55a982cb5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Al trabajar con los callbacks de un grob, puede ser de mucha ayuda
index 06cbb391b571e77ba0dddc20fae385af14cf467b..ac428f6d3dff85386d061b3cde34bfd540fd9492 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Alteraciones de estilo dodecafónico para todas las notas, incluidas las naturales"
   texidoces = "
 En las obras de principios del s.XX, empezando por Schoenberg, Berg y
index e258dbe4e24d045cb3b144bd9e462b03cca6457f..6db89c9b674855b07bce1af21b32884485031093 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Funciones postfijas para la creación de objetos de extensión de texto
index a0e9e4735f778177344ea78dc2ebab8c81023612..7fa542d664cdec0fbbb2311c1ddbd93f41b2fc8d 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Los objetos de extensión \cresc, \dim y \decresc ahora se pueden
index 2b0fd93df31e5275f25a9b3dab024257826100ef..35fa762e8fb97da966ff415153940b0a5d847cb8 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede insertar códico PostScript directamente dentro de un
 bloque @code{\\markup}.
index 00c356111a38d69cc319f9edbabfeb9d3cd2e98e..76ffb6635c3c0746f49966716ae99d971d87be7d 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Del problema central de la notación, esto es, crear un determinado
 símbolo, se encargan los «plugins» o complementos añadidos.  Cada
index b51607698db154f559821555c8d1e4691cad29a1..708fd6e0a3008812eac783c593ce3be199925ad7 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Grabado manual de las ligaduras"
  texidoces = "
 Se pueden grabar a mano las ligaduras modificando la propiedad
index 6090497cf83b7ac994e3e40af3ae71b559b0c79f..42f6e51b7283df46c21c11755c7b20afee60d0de 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times"
  texidoces = "
 La propiedad @code{tupletSpannerDuration} establece cuánto debe durar
index 02c525ea08c5aaaab561894dbe4e11126b06ad5f..e301050760b7bf414ea15189b86456c9ad8d0878 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de
index 843cd48251ba8369980fff3210bf41d87e1fd9d3..9875f5bacc864aa55fad0e85af59845214ca3414 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden conseguir símbolos especiales combinando glifos existentes,
 lo que es de utilidad para la notación de instrumentos de viento.
index c8711879e19d399bbd2f7213e025a6087ca3bde4..c3085649cf4d1daa934000be770164881cb6d780 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En este ejemplo se combinan las digitaciones de la mano izquierda,
 indicaciones del número de cuerda y digitaciones de la mano
index fd6a0b957d4a95c5a43c3149a42f0f8f14715c47..f8b4d963cc1b8d94047eda60f986ad9b05ea0f9b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 0628e9e69b472f42a8c67d099c9f1a40261144d5..257d37626651fd65f3aa5c52c2604af895cba4c6 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Son posibles tanto los corchetes rectos sobre notas sueltas como
 extremos de barra sueltos en figuras unidas, con una combinación de
index 33acdbf16ea1c65e8f76fb1fc998f911099cfe34..a5018089681d193a9dd101c2a617b5240aff0133 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
  doctitlees = "Forzar el desplazamiento horizontal de las notas"
 
index 587efb0c16e11273b546ae552b4165092cc2218e..01a8ba8586f5150f070d32a2260741fbd6116d38 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Si LilyPond no cree que haya sitio suficiente para un guión separador
index ed3e9615e1a5062f2fa18f7142de7c92b882ca97..97671cc8d8653efe73102ec9ea7d248546746301 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Se pueden crear tablas alternativas de diagramas de posiciones.  Se
index 3c0507afb8bc269c9a76f7589cc437b5b0594827..407ca0848abfa6d19c771c0b6d929b3d0551de17 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Armónicos sobre cuerdas pisadas (armónicos artificiales):
 "
index f693aba4bf6a4206155e55015313207d7b05bdb9..1f784ca06c9bc4a54624e62aa7b4c9862a7b8eaf 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código basado en Scheme genera
 24 notas aleatorias (o tantas como se necesiten), basándose en la
index 4c62612287f6dc5919ee2d47606ea441872c4539..613e14596a73a16ec705d21fe9a2b27bbc426ad0 100644 (file)
@@ -1,4 +1,4 @@
-%%%    Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 En muchos casos, las llaves que no están en la columna central se
index f29d1dd7dccd46f5e3032cca9e81fd3746183ce5..ca5f561c03916d019f18cbd5cbb3988cda3627e9 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede cambiar el aspecto de las líneas de rejilla
 sobreescribiendo algunas de sus propiedades.
index f1149139365e959a4eb5008f17cb4e2a9c194e26..38a5bd590ea757d1fd9ac69ededd7d9e74061685 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden trazar líneas verticales normales entre pentagramas para
 mostrar la relación entre notas; sin embargo, en caso de música
index 007aefe141fc7bd8b814139badc82bf546223c24..b2f20c8836c73c63edaf4606e30dd4cc43af23a7 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los patrones de barrado se pueden alterar con la propiedad
 @code{beatGrouping}:
index 995125fcc5b841d2fd9b94bf6d272c65aa7d0582..7b8c0e64aa5d9a12adfee54da7f6e128f82dbe15 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
 
   texidoces = "
index 8e8871cb4f0b92328c2cbf8aef12175bec4f79ef..22df114d7880a68730dc04801a6f52d08986814c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para la música de guitarra, es posible mostrar los ritmos de rasgueo,
 además de las notas de la melodía, acordes y diagramas de posiciones.
index 45f0c80f972784c303322cc7a4ba2596b7f68883..bdcf0aa2cd3eecb494b591b19566df8b08a54353 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los reguladores pueden imprimirse en uno cualquiera de los estilos de
 @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag.
index 1dcce13c8883c242d9ae11bdea5a9c30172b5fff..ed403630dda0e1b2c9fc4dd56f221f14a54ac96a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Aquí se muestra la manera de ocultar las alteraciones de las notas
index ae585d7e42173dee439408b293f4a06e2505757c..f09b87e9e0d0a47c4ee4e12bd983b0b674785054 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los cambios de dinámica con estilo de texto (como cresc. y dim.)
 se imprimen con una línea intermitente que muestra su alcance.
index f9202e04df7d77ff600153e02b2f745b45362dd7..55f370ac062a896baf21bde75cd8321ccb5f9012 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
   Este fragmento de código muestra una forma de preparar un himno cuando
 cada línea comienza con un compás parcial.  También muestra cómo
index da33f0944f7bdcd58738a92ea1eac06b5a717042..723e37829f3f0fd547d8a340e08d012b093d4a96 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los «incipit» se pueden escribir utilizando el grob del nombre del
 instruemento, pero manteniendo independientes las definiciones del
index 895eaa8d368013f29274675febd3f47fdcef0dd2..c042800f2a261be40ab4487175a147c6d87d86c3 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Un corchete de arpegio puede indicar que se tienen que tocar con la
 misma mano notas que están en dos pentagramas distintos. Para hacerlo,
index 7174835db0ebb0e652539f3b7c1f215359857895..cd716df4fc11df998069244c7926f6b00b9d7061 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las marcas de cesura se pueden crear sobreescribiendo la propiedad
 @code{'text} del objeto @code{BreathingSign}.  También está disponible
index 028b195f1a63d8fddbb579637409f3b992c13f7e..f33342f4efd8f3464030f9ea2841e0502f42313d 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 También se pueden imprimir símbolos de porcentaje sueltos.
 
index 9de4f4ce84285a1545cef019febad5b74c55edff..e1a5576bddef58d6ba75c640a6f3a138c07099c8 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Ésta es una plantilla bastante avanzada, para un conjunto de
 jazz. Observe que la notación de todos los instrumentos está en
index 463cc444ca42f91920eaf7493f5cb31c08bf2da4..46c14b1a7528539d5bf424f95e88470d43909ab8 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Cuando se produce un cambio de clave, el símbolo de clave se imprime a
 un tamaño menor que la clave inicial.  Esto se puede ajustar con
index 35732f8512290e117cc579afc2f295f215daa015..c2e435ec11361b11328abe877bcffdb48b3f742c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La tablatura se puede formatear utilizando letras en lugar de números.
 
index 268620b275f586c1db52c2d93d9712e46a875203..e99fb9931e9fc215b30757559da6f81e8f3e084b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden aplicar puntas de flecha a los elementos de extensión de
 texto y de línea (como el Glissando).
index 4329394244ecd74319f39e86334700c4ca73da71..b93821b2f34c4682bf4af03675b0905b49baed27 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La alineación horizontal de la letra se puede ajustar sobreescribiendo
 la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
index 7917eaea9ac609575f3f3b877d8151b6e18390eb..983cf8daf3286a08a749098030af7215a9a85362 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El «Makam» es un tipo de melodía de Turquía que
 utiliza alteraciones microtonales de 1/9 de tono.  Consulte el
index f5724bccf5d69920b654f33467fbb3c9d4405e17..3f47c37a632454f234602414b00c65e0052554e5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Las ligaduras de expresión se pueden construir con patrones de
index b159db239e634d87f8182df1bcd37ecca16d6596..2ffc6906147135343fdf9d328fb6cd97d2373e77 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede engrosar una línea del pentagrama con fines pedagógicos
 (p.ej. la tercera línea o la de la clave de Sol).  Esto se puede
index e9597c6fa9e7f22bea66886202a245800f88e008..d2973dc6f73659eae5a04f6b59bfd103a5496a09 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código proporciona una solución alternativa a la
 producción de contadores de compás utilizando repeticiones
index c91f3bd0959b4a1bccfe062fbd7f0834a26c10d8..3512f6d28305b1fc50af534e6a091c7ffefd81f6 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La disposición «mensurstriche» en que las líneas divisorias no
 están dibujadas sobre los pentagramas, sino entre ellos, se puede
index a935b04830e29ff07bb9b9d6871bd87f343b66cb..4e053eadbc6f341f2b2c09f257433bf2b243d06a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Utilice un texto de marcado para sustituir el glifo de clave (TAB) con
 una fuente tipográfica moderna.
index 3a565a21d63aef7250b01b9a40738f642911f0e2..14faaa0f4e43f18975d4688d9d6ca400e0384153 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las abreviaturas se encuentran definidas dentro del archivo
 @file{ly/script-init.ly}, donde las variables @code{dashHat},
index 235501b004f33b85b6a534560d6e58d390fbec4c..3eaa1b08e500b8f2b5e6ae627824a44a3718dbda 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Cuando se puede una nota en la voz superior para evitar la colisión
 con una nota de otra voz, el comportamiento predeterminado es
index 2a4b11ecab8a707155a43ce231323ab8385415fb..bc8e87117ecc03e0e17d721b48ecafd303e017e0 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede ajustar la posición vertical de una ligadura de
 expresión utilizando la propiedad @code{positions} del objeto
index bc7c6cff79727745bf026ec9540983dbd3814b60..122761bba0fe35d0e99ee466e1082aa240857b49 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 texidoces = "
 Los elementos de marcado aplicados a un silencio multicompás se
 centran encima o debajo de éste.  Los elementos de marcado extensos
index 9c784357cf60a6b1d329448f96d63d5a10ab5e59..3744b410eb47bf8bbfb60f21c8e73f195cc986a9 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede utilizar la propiedad
 @code{systemStartDelimiterHierarchy} para crear grupos de
index 5523350728a644825180577dc57b508ad52d0fbd..f26aabd62e7b7a2f074187b31a103d6d01e100e0 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 LilyPond también proporciona funciones de formato para imprimir
 números de grupo especial diferentes a la propia fracción, así
index edcc780e455734545e2c11e6ac8ab247690cabcb..fd32ace28470943c103fba1c78ef142d88554314 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Armaduras de tonalidad no tradicionales"
   texidoces = "
 
index 25e815071dcd0872f041aa02cc74f3e8af2b91d3..6c79fd76a73db090bd2cff84769ba74c852075bd 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Las cabezas de nota de notación fácil utilizan la propiedad
index a35132a74add95ebab10f510c5f47eb57bfd4877..546a53d0d2d88768e3c18ff86d51183c1344855f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Referencia para armónicos sobre cuerdas al aire (armónicos naturales):
 
index 9555987b48516dbbf060aeda033771b7ed34774a..4c5226c58fd4d3246d0764064e3dad7ddba622cb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla muestra el uso de contextos @code{StaffGroup} y
 @code{GrandStaff} anidados para sub-agrupar instrumentos del mismo
index 27f2c0d9b0871a5c50dbdd08c1c75fb80c8a5d52..e3ef2ecdad0e612ab7d6afa7905d16e5bb7181af 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Internamente, @code{\\ottava} establece las propiedades
index cc9df35f3ca32dfe493bfb164b7220d0c2fe6cfe..b5ad2c08ab46a7adb04a1aeddafbcea162ba03b4 100644 (file)
@@ -1,4 +1,4 @@
-%%   Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%%   Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 99644c9b4f837c81cfee2fae0f9c75200ca7ca1c..0fa87387577119c22bc3a499cea0b904194b4342 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden mostrar los contadores de las repeticiones del tipo
 porcentaje a intervalos regulares mediante el establecimiento de
index cb08b9cb449e5b97690904c7a1e031935a082e48..e3508de1e77fac16ec30dcec02fbb2b2a96d33a5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las repeticiones de compases completos de más de dos repeticiones
 pueden llevar un contador si se activa la propiedad adecuada, como se
index 244b7efc64b37513b0499b1856243938f03a6fb0..02efb378d994728d0221fb03c773a79d39d6b6dd 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra"
  texidoces = "
 Este ejemplo artificial muestra cómo se pueden permitir tanto los
index 60108b6506997f2f982c78c6fecccb78cbf9ac14..6b53ddb3fbe67ff4b4b45f867834081cb690de25 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Presentamos a continuación una plantilla de piano sencilla con algunas
 notas.
index b855ca92c4f160f937dc932e68801a53f401e327..8791c62ed16d1001bf0b7a48dd4cc12568c8023a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Muchas partituras de piano tienen las indicaciones dinámicas centradas
 entre los dos pentagramas.  El contexto @code{Dynamics}, si se sitúa
index cbc23a20508df2e242b22ede892c194d5bef9cfc..43fdc8f79e9366c0e1d15d525584cbe877d12be7 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En lugar de tener un pentagrama dedicado a la melodía y la letra, ésta
 se puede centrar entre los pentagramas de un sistema de piano.
index 116d0d68f6e0ab5a9c2656f2bff4c38ee7d50085..df42f1caf4fb11e1696fc0580a484d6ef80f1919 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 He aquí el típico formato dde una canción: un pentagrama con la
 melodía y la letra, y el acompañamiento de piano por debajo.
index 903b8dee513290c18a5a1fcf0771bd0299157742..09be93da72e094d310c152efc8688d6d5dc2ab1f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Es posible ejercer un mayor control sobre la colocación de las
 digitaciones de la mano derecha estableciendo el valor de una
index d4bef14108b673ceed5a084ed3739f6c645accac..5c784ee748d15aba3a36a7e44dfe9368c34babf6 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La polifonía se crea de la misma forma en un @code{TabStaff} que
 en una pauta normal.
index 8c8735a3452ef069a92121db4fcb862fd76d4ec2..5ce5351e066086c70dab77ebdb62722af04db810 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si necesitamos alargar o acortar un símbolo de arpegio, podemos
 modificar independientemente los extremos superior e inferior.
index 50ac3423a930e6615a56574452dd214578660a7f..1871a77066eaf7d93121e7ab9ef688d4f5d62701 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Cuando se colocan figuras sobre líneas adicionales, sus barras se
index a87b54931281df807d96cc6fc8145ff28d6cb909..de40c0b4600ebd9064a487ae0d33bd53f7a7d7eb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Al establecer la propiedad @code{'strict-grace-spacing} hacemos que
index 83aa54350708a9b9ee18ab084382f257c2f2f1ca..e38d22b3a5c7087f0a8895bc74afdac5da7abbc3 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Posicionar los silencios multicompás"
  texidoces = "
 A diferencia de los silencios normales, no existe una instrucción
index d6f3291ce5bb1788630395915662ccd3334b08ae..dc38b876679d528cbefb9d68b398a30b9c3036ea 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los elementos de marcado de texto deben tener la propiedad
index 4f2b7421a9a160855ed74987e28e595b73fcb59c..4c9b0fbcd5e040471b4d0ce3e77765dfb26b6f22 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 doctitlees = "Evitar que se añadan becuadros adicionales automáticamente"
 
 texidoces = "
index 8f8a57fe6194b0579e204f96221aba6731c9a480..a59f357d59ea8b9ba29e2da1474ec86626b1fd51 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura"
 
 texidoces = "
index 8da59006f52758e89a255345ca7fa2b6bb3a8042..d5b678e4d1adb435cfc96fe79e3d4a046e8d786c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede imprimir una línea divisoria de la forma @code{|:} al
 principio de la pieza, sobreescribiendo la propiedad correspondiente:
index b122bce68da29c604ce26cdab7b05065377aecbf..800bfcc71b81011741d0b40fbf2c1853d583142a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden imprimir los números de compás a intervalos regulares
index ba44650d5094787253e48273d8c0d2f2310cbc69..05a3a5f3f61f82347af6d55f4136a71e532234ae 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias.
index 7fa14c4ca07b74f6cbb15ae890bcc9c74f4b362f..775e330e6d3c2b4b6964c6fcfbb5b43e579b8026 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden imprimir reguladores con un círculo en la punta (notación
 «al niente») estableciendo la propiedad @code{circled-tip} del objeto
index 2973adf632aee2bea09ebba5e6783fb4a5576d94..6336bf03b1db3accf882245b1d50f63499d4e744 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index da7949aceb9f76524dbca7d19eef478686829716..fa365c43f0656301577ad2cf74a658ef17aee03c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aunque normalmente las marcas de texto sólo se imprimen sobre el
 pentagrama superior, también se pueden imprimir en otro pentagrama
index 8eab0db1c9e1f8f38980638a76cd71c9c8b3b3a9..3525466cbc5e37f022a890ef728e0ef7e0aa4bac 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada, las indicaciones metronómicas y las
 letras de ensayo se imprimen encima del pentagrama.  Para
index 1c5bf2e9f1aa2f0825136e172122c18d919a542a..322c2d338e5673ee97e9d08a55e05b8f92152730 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar el contexto @code{NoteNames} para imprimir el valor
 textual de las notas.  La propiedad @code{printOctaveNames} activa o
index 4f0a9764ee365893249c7614c517ad58b54fceb6..04c56bec8d447c6fdb9ac131448057a3f055fd35 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 De forma predeterminada se suprime el número del primer compás de una
index 31e6331389ac53a31224ad13e392c0a81dfacd00..5a5c6eb72d7b08d97f7d7057917f815dc9f6437b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los pasajes citados tienen en cuenta la transposición de la fuente
 tanto como la del destino.  En este ejemplo, todos los
index f83cb453b7250ad97ed2028bad3fc818109cc9d6..20c06466b03e9e25383ab59dffae3b2f2f6bf07b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 La propiedad @code{quotedEventTypes} determina los tipos de eventos
index 1161950d5d16c840738f1bd7dc3ad5dda2e41c6a..daf5bf180edca39f30a2a60f0e287be3019b7f3e 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 El ejemplo siguiente muestra cómo se pueden realizar diagramas de
index 73e0ccbf4df2b5efc8eb54bfd0c05ee3c99baa67..0ceb9d258dd2297bae885cbb0a4b514a9ab28720 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los valores predeterminados para las notas de adorno están
index 8ac8d86aea23fada1ee2b1a0ea944bd9323081d0..9b4ca55b032ec7901e93df68ec971cb4f7fd0856 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden eliminar completamente los números de compás quitando el
index ddb92b150cece0b11c3c18a4801d18467ee54ef6..7556406578fd8776ea6d7102b7e82312ed280449 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada, las líneas divisorias en los grupos
 StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas.
index 8de848e1441150a2c8891eafcf5a91d05de0a893..69da020c5a47883da04095d3687300e0f77a618a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El primer pentagrama vacío también se puede suprimir de la
 partitura estableciendo la propiedad @code{remove-first} de
index 1949ffedbed19b798bf2cf4e4b5dc6b959e42ef4..4589ea502a2a17d51bd2bf5389641c0177ca76bb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Estilos de silencios"
   texidoces = "
 Los silencios se pueden imprimir en distintos estilos.
index 833aaff26d93cb86c733f58744063aab744f6f7e..de5cb632c72ee4b00744e1e68ffc515da8b921b3 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} sólo
 es necesario modificar la estructura de pulsos:
index 1a069bc7f087e1e1133ef23958fca85207eb53cd..50ff9f354f65166c3823eefbf0f5233c0769f3d3 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si la nota que da fin a un regulador cae sobre la primera parte de
 un compás, el regulador se detiene en la línea divisoria
index 341a8caf8ddef72df31b7457978affe62e9af617..b4df3e69d899733af291c73f98d7665929f7d6db 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden insertar separadores sistema entre los sistemas de una
 página.  Se puede usar cualquier elemento de marcado, pero
index 9039db07e7e043760a3d45746d2a0c1859466dd9..9497395e970588b7cea31e043eedd26679c5b8f1 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 51567b254745df89073a79bf9302fa958cc10721..39c22b8181b5319a821b83ca863e71161d2f909f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si los reguladores son demasiado cortos, se pueden alargar
 modificando la propiedad @code{minimum-length} del objeto
index 841d3b68129675e56f3c83d8230950928158fe12..f6e10c8e238d0ce48ac76794dcf1333c8022ce96 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada, los corchetes de primera y segunda vez se
 trazan encima de los finales alternativos completos, pero es posible
index 76266c710d1c53887777f5f4898d37450600c0d4..d8b257532db04bac737f43043e0afad67788e47c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden imprimir los acordes exclusivamente al comienzo de las
 líneas y cuando cambia el acorde.
index 6e1b7aaca8451fbab3ca61c35747df60ede4f069..7d22ee934d00a400ff87e1ff0061da82d9b0142e 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al juntar nombres de acorde en cifrado americano, melodía y letra,
 obtenemos una hoja guía de acordes o «lead sheet»:
index c602129bfdbed07a6c03214d7f6f5308f6788832..4cf055e8d17667a4ffdfd6ace1487f8ffb47110d 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla facilita la preparación de una canción con melodía,
 letra y acordes.
index 9fccac5c8deb49c2eba5570a9cb4c928b70d1774..87205c9defdbd163cceeee50a43bda93f6f8f56c 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Presentamos a continuación un ejemplo de plantilla para una hoja
 guía de acordes con melodía, letra, acordes y diagramas de
index 09e3f9169605c5701e4b85cf657419ef00dda500..953bef4393c9744af8ceaeadeca17c14b24b40c2 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con
 melodía y acordes?  ¡No busque más!
index 39b94fcab9e2677969af375f220b09b40ac49aab..36b231296caca9eb3846bed14b8c27726c4515dd 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta pequeña plantilla muestra una melodía sencilla con letra. Córtela
 y péguela, escriba las notas y luego la letra. Este ejemplo desactiva
index 9cedf523b6affbfe478e3c6d40db89349f56216f..137134d97fb449f09f7d67cd32c8011874b07563 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla simple prepara un pentagrama con notas, adecuado para
 un instrumento solista o un fragmento melódico. Córtelo y péguelo en
index 4f3b191bbce5031fb8f6b93e71d9439821b9c0fd..3c5f3f4ff0bc6080797b20aa78f85455374879f9 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los deslizamientos se pueden componer tipográficamente tanto en los
index a8c09080f80b3409c8b27bcdf0e906057f638cd4..81b5af19d070c8e25b8fc1636fde14c4c3c10970 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Marca de pizzicato de chasquido (@q{pizzicato de Bartók})"
   texidoces = "
 El pizzicato de chasquido (también llamado @q{Pizzicato de Bartók}) es un
index 6cbcaf36462a9f5389712bdaffa29de3d7477e20..7d73078bff48a890e7543c29f1e041b06523da03 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los textos independientes se pueden disponer en varias columnas
 utilizando instrucciones @code{\\markup}:
index fb83fa6e1b782a31ff929ba5caae942131daf746..1e282b5dac5bdb6b5ead42d3fa11408414e68feb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La dirección de las plicas se contola de la misma forma en la
 tablatura que en la notación tradicional. Las barras se pueden
index 86a9a553849608f5344d0991c50d3599a75ce4ca..bb2eed39b3f0e4d15c3eb4b8703b2ae8b1244619 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla muestra un cuarteto de cuerda normal. También utiliza
 una sección @code{\\global} para el compás y la armadura
index d518f3f3a55af154bd2f16046e5c615845a4e626..971eaf7d8f9198291e4a704a71a86b476a953b55 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un
 resultado satisfactorio para el cuarteto, pero ¿y si tenemos que
index a3cfb3e570be7fb0f5cfcc5b8023a90b2339c651..a104a257b9756527ae6c41257601e6f3f2ff818f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 5dd8ca73d1686de30f7bcaeb3d7a7131666e7591..f2ee0649204ae1ff7fe9f8c0c6ea518ec957132b 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 A veces, la indicación de compás no debe imprimir la fracción completa
index 2a5c342bc0896ce8e8c201dbf5020aeda6bc089e..a03de2975e96e47439cadf9a4c5d843445a10a30 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 A modo de alternativa para obtener auténticos «incipit»
 independientes de la partitura principal, se incluyen como
index 1b8d025d785d0f8029ef3c415b9b6ab8ca4bf79a..301fa9bc3358e0965d1748b42231b456ebe2ff6e 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 doctitlees = "Transportar música con el menor número de alteraciones"
 texidoces = "
 Este ejemplo utiliza código de Scheme para forzar las
index 9fce5b9d13aec853858dd6f7b48a59bff2d52f26..de99a067d926656595f9d8ad14d7e2fe28c57af3 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Trucaje de las propiedades de clave"
   texidoces = "
 La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de
index bb8b466eabaceecd2e02107a7e85a491eb14b7b0..ad9d63d742c0a417521ee66048942605d9f7b478 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 La disposición de las expresiones de adorno se puede cambiar a lo
index 1632ded001f910a4febdb14ce66cc5989457ca0d..d481d49ae35f763b23903c3b4bba455205f89dfb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar el delimitador de comienzo de un sistema
 @code{SystemStartSquare} estableciéndolo explícitamente dentro de
index 7b181284f0a379c0e0b820eba41268fc492c5f2f..5f7320a6acc68493bfde952a7b29f6dd294b4c7f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden imprimir estilos alternativos del corchete o gancho de las
index b59f3969e138cda41ed426a0b241efafa5a2a9b9..359243b4ff1025509d654db384abea521997141a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El corchete de arpegios @code{arpeggioBracket} se puede usar para
 indicar la división de voces cuando no hay plicas que puedan ofrecer
index 65c75a222370ab37f8dda5ff92568ec9d81b667b..34841635634c019c53061c87aa11a191bd35a2fb 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Algunos compositores escriben dos ligaduras cuando quieren acordes
 legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
index a8ba3d37c86aa177ad36a04da60c052fdcc973d9..f23898a93ccb8fe1f00c53365a3a7486dbc3f2fa 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Es posible aplicar la barrita que cruza la barra de las
index 3fa5d94c82760ff24a9c1f93f4aa134f9e2a173d..e28ce18919a6e8b3e57f912d14a814d09a2a22c2 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 25622e5fe505e20f1c00e4dab067f032bdac6fff..84a85a1a82ea8755af9f6eaa1f83567a83f9cc7f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index c927221787c85815ea008183435273a652de48b9..10bf174f45eb81694b6dfeec9a34df5335d20403 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Uso de ligaduras en los arpegios"
  texidoces = "
 En ocasiones se usan ligaduras de unión para escribir los arpegios.
index ef2a87c1867e869b3356be49be920fd428b3c02d..e3ecfa48459b0c62d19a3e306bdbdbeb8890fbfc 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor
 adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e
index 5b16cc5049931cfb57689dff96db5ef9caaad092..5246b684ee18410d634a09d89dba7608944d17e5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las expresiones dinámicas que se comienzan, terminan o se producen
 en la misma nota se alinean verticalmente.  Para asegurar que las
index 7d4bcfa303faf10005a316e2684e4446a0881cfe..ff8baf8153bf72c8920fe7e54517c4436843ab86 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código muestra el uso de las propiedades de
 contexto @code{alignBelowContext} y @code{alignAboveContext} para
index 5c5596d763a14df2b28f7c85275919ae6bd3cfae..22e70cb15c40cac05f381df9ea3ee9ef067ce119 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Allí donde se utilicen líneas extensoras para el bajo cifrado mediante
 el establecimiento de @code{useBassFigureExtenders} al valor
index b1518b7251e959906a5207e1c87a0472b044c787..e8826756c22c104087b3c41ecb160a14721a9c27 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Esta plantilla añade una reducción de piano automática a la partitura
index 2f184d1d92227949412633d453690d7d3424e5b1..c0e1bf2518d6006a3ee402f6ed6a16c72ee2161f 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla es, básicamente, la misma que la sencilla plantilla
 @qq{Conjunto vocal}, excepto que aquí todas las líneas de letra se
index f35a6b09f8985e561440c7e9bc34298ee67246e2..28699376cbd02c5a5c05ca75633438e5613cf3d5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Esta plantilla crea una partitura que comienza con una estrofa para
index 022a2bbd3f997338e65084e4fa43e1301f320317..8e42c1e2e2d91558b70e7a7c046feafaab133cff 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 He aquí una partitura vocal estándar para cuatro voces SATB. Con
 grupos mayores, suele ser útil incluir una sección que aparezca en
index 1b2144b2f55eaecb347b54a21fb86584c7009c5e..20debf9506b8e548cc8331d1b5c0d4df3c3692d5 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Mediante la adición del grabador @code{Volta_engraver} al
 pentagrama pertinente, se pueden poner los corchetes de primera y
index 89560cc396e9cd3d602798182d0a5b0db6d2af91..2b958e1627ef1576f6ab88afad60023b7ad5d019 100644 (file)
@@ -1,4 +1,4 @@
-%%%    Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 235921001633f5de0d0dea42f5de3997c10ef94c..f1914b646feba1fe1296320b90e4ba1e43087090 100644 (file)
@@ -1,4 +1,4 @@
-%%%    Translation of GIT committish: 615cbf212fdaf0b220b3330da417d0c3602494f2
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El fragmento de música que aparece a continuación presenta todos los
 diagramas de viento madera que se encuentran definidos en LilyPond por
index afb096f0572b5866d6c36c4e1ccda6d94ed5728d..7aaf073be070d6fb74eafa3793a820cb85952d4a 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Actualizado en Thu Mar 24 14:52:33 UTC 2011
+@emph{Actualizado en Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -30,7 +30,7 @@ Registro de cambios de LilyPond
 @item
 Títulos de sección
 @*
-1464
+1779
 @tab Francisco Vila
 @tab 
 @tab 
@@ -150,7 +150,7 @@ sí
 @item
 1 Grabado musical
 @*
-5297
+5296
 @tab Francisco Vila
 @tab 
 @tab 
@@ -471,7 +471,7 @@ sí
 @item
 4 Trucar la salida
 @*
-15408
+15393
 @tab Francisco Vila
 @tab 
 @tab 
@@ -618,7 +618,7 @@ sí
 @item
 1.1 Alturas
 @*
-4479
+4502
 @tab Francisco Vila
 @tab 
 @tab 
@@ -662,11 +662,11 @@ sí
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">parcialmente</span>
+<span style="background-color: #1fff1f">sí</span>
 @end html
 @end ifhtml
 @ifnothtml
-parcialmente
+sí
 @end ifnothtml
 @tab pre-GDP
 @item
@@ -699,7 +699,7 @@ sí
 @item
 1.4 Repeticiones
 @*
-930
+945
 @tab Francisco Vila
 @tab 
 @tab 
@@ -726,7 +726,7 @@ sí
 @item
 1.5 Notas simultáneas
 @*
-2163
+2216
 @tab Francisco Vila
 @tab 
 @tab 
@@ -753,7 +753,7 @@ sí
 @item
 1.6 Notación de los pentagramas
 @*
-2056
+2345
 @tab Francisco Vila
 @tab 
 @tab 
@@ -888,7 +888,7 @@ sí
 @item
 2.2 Teclados y otros instrumentos de varios pentagramas
 @*
-838
+864
 @tab Francisco Vila
 @tab 
 @tab 
@@ -942,7 +942,7 @@ sí
 @item
 2.4 Instrumentos de cuerda con trastes
 @*
-2640
+2649
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1131,7 +1131,7 @@ sí
 @item
 3 Entrada y salida generales
 @*
-7069
+7671
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1158,7 +1158,7 @@ sí
 @item
 4 Problemas de espaciado
 @*
-11017
+11087
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1386,7 +1386,7 @@ sí
 @item
 3 Ejecución de @command{lilypond-book}
 @*
-3764
+3952
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1533,7 +1533,7 @@ sí
 @item
 Introducción
 @*
-4506
+4564
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1560,7 +1560,7 @@ sí
 @item
 Descarga
 @*
-1183
+1195
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1587,7 +1587,7 @@ sí
 @item
 Manuales
 @*
-1200
+1203
 @tab Francisco Vila
 @tab 
 @tab 
index 1d92b50713477071e92a231984c25b8a9a22260a..edf4cb45784c3c99e16042eca3c92ee7eba38841 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 503232b10507bb2a0e816e5da078783ba1daf360..0b3d270bdce4499e2ffceddbf1dc529920568519 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: f78131595ebafac25a416671e5a4b9c8b14e79b5
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 8684fe7e5635cd7ba353bdd7aad9c577bb082227..5fc9ee8222d474f2b4e21252aef6cdca49aa86a2 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: cff226053d927e433473697fe743bdfd721d2607
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 13a84a40bea8464808c5c0903e162a6c11a4f937..5bcce5aa47a4748e4464fd9962f42fd1df4daa25 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 9c06abb33e159d9d4db2720e9c0d76363eae27fd..b05b05bc2b79862edab532bb8e17808fc900e98e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-    Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index ec0af5eb7fcfba16f7fd171ca6d4f2ac201533f3..e001e51184f69c8942db17d3e3be3de127c76beb 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: f64b0d88f1c8355e87f37d2e6cacdcf47c959d5a
+    Translation of GIT committish: 12503a0c383617cd11fa0bba2836af6c0518ecf7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -209,6 +209,14 @@ En la línea de órdenes, escriba:
 uninstall-lilypond
 @end example
 
+@subsubheading Ayuda
+
+Teclee lo siguiente en el shell:
+
+@example
+sh lilypond-@versionStable{}-SIST-OPERATIVO.sh --help
+@end example
+
 @divEnd
 
 
@@ -232,22 +240,22 @@ actualizar a estas versiones.
 @item
 @sourceimage{logo-fedora,,,}
 @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.12.3}
+Fedora: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-ubuntu,,,}
 @uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.12.2}
+Ubuntu: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.12.3}
+Slackware: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.2}
+Debian: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-suse,,,}
@@ -512,7 +520,7 @@ ejecutables de LilyPond de la siguiente manera:
 [@var{ruta preestablecida}];@var{CARPETA}\LilyPond\usr\bin
 @end example
 
-@warning{@var{CARPETA} será por lo general @code{C:\Archivos de programa}.}
+@warning{@var{CARPETA} será por lo general @code{C:@bs{}Archivos de programa}.}
 
 @noindent
 y pulse el botón @qq{Aceptar} para cerrar la ventana.
index d2e79d49548ae5bfb9d84f4ec5c748672d4a1e0c..58418fba2067f6192ac1b526faa63c061565c5c9 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: 346067ab7e42c9cbc359d48b23c79dc0780c8320
+    Translation of GIT committish: d282588015bad1ed86833848a5bcbdc43cfdc9e5
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 8b4753a09979bd03f92a80bce0e96641a72152be..1103ac7501dda4665acbb9b4dd2231452ab2d322 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: a9e295650dc1d588ac03cf0c43230b8b28229bdd
+    Translation of GIT committish: 4d828c178c06d87332301030cc02dde9a9403538
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -128,8 +128,8 @@ referencia sobre el trucaje.
 estado del proceso de traducción para los lectores no anglófonos.
 
 @item
-@ref{Todos}:
-enlaces rápidos, manuales descargables y manuales antiguos.
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository (el almacén de fragmentos de código de LilyPond)}:
+ejemplos, consejos y trucos creados por los usuarios.
 
 @item
 @ref{Desarrollo}:
index 64c9c328f9e7f35131e1ff873c722d6a3b516011..7dd6cabdd6b6383f08131fb2808db17fabed22aa 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: e816bb2cfe498d49732ac66616ca351738585028
+    Translation of GIT committish: 44e7718b042af70430c0adada42bc0f9d5e25a4a
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
 @c used for news about the upcoming release; see CG 10.2
 
 
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.15.4!  @emph{4 de julio de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.15.4.  Esta versión
+contiene el conjunto habitual de correcciones de fallos.
+
+Se recomienda enérgicamente los usuarios normales que @strong{no}
+utilicen esta versión, sino la 2.14 estable en su lugar.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.15.3!  @emph{27 de junio de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.15.3.  Esta versión
+contiene el conjunto habitual de correcciones de fallos.
+
+Se recomienda enérgicamente los usuarios normales que @strong{no}
+utilicen esta versión, sino la 2.14 estable en su lugar.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.15.2!  @emph{18 de junio de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.15.2.  Esta versión
+contiene el conjunto habitual de correcciones de fallos.
+
+Se recomienda enérgicamente los usuarios normales que @strong{no}
+utilicen esta versión, sino la 2.14 estable en su lugar.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.14.1!  @emph{12 de junio de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.14.1.  Esta versión
+corrige algunos fallos de poca importancia en la versión estable, y no
+debería causar problemas.  Recomendamos a todos que actualicen a esta
+versión.
+
+@newsEnd
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.15.1!  @emph{11 de junio de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.15.1.  Esta versión
+contiene el conjunto habitual de correcciones de fallos.
+
+Se recomienda enérgicamente los usuarios normales que @strong{no}
+utilicen esta versión, sino la 2.14 estable en su lugar.
+
+@newsEnd
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.15.0!  @emph{7 de junio de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.15.0.  Marca el
+comienzo de un nuevo esfuerzo de desarrollo no estable, y añade el
+número de errores acostumbrado.
+
+Se recomienda enérgicamente los usuarios normales que @strong{no}
+utilicen esta versión, sino la 2.14 estable en su lugar.
+
+@newsEnd
+
+
 @newsItem
 @subsubheading ¡Lanzado LilyPond 2.14.0! @emph{6 de junio de 2011}
 
@@ -48,7 +118,7 @@ se evitan las colisiones de barras.
 Se da una lista completa de las funcionalidades nuevas en:
 
 @example
-@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html}
+@uref{http://lilypond.org/doc/v2.13/Documentation/changes/index.html}
 @end example
 
 ¡Feliz edición de partituras!  LilyPond 2.14 llega a usted de la mano de...
@@ -63,11 +133,11 @@ Vila, Valentin Villenave.
 
 Colaboradores de programación:
 
-Sven Axelsson, Pál Benkő, Bertrand Bordage, Frédéric Bron, Hajo
-Dezelski, Richard Gay, Keith OHara, Andrew Hawryluk, Christian Hitz,
-Marc Hohl, Henning Hraban Ramm, Ian Hulin, Michael Käppler, Marek
-Klein, Kieren MacMillan, Thomas Morgan, Benjamin Peterson, Nathan
-Reed, Julien Rioux, Boris Shingarov, Patrick Schmidt, Owen Tuz, Andrew
+Sven Axelsson, Pál Benkő, Bertrand Bordage, Frédéric Bron, Peter Chubb, Hajo Dezelski, Richard
+Gay, Keith OHara, Andrew Hawryluk, Christian Hitz, Marc Hohl,
+Henning Hraban Ramm, Ian Hulin, Michael Käppler, Marek Klein,
+Kieren MacMillan, Thomas Morgan, Benjamin Peterson, Nathan Reed,
+Julien Rioux, Boris Shingarov, Patrick Schmidt, Owen Tuz, Jan Warchoł, Andrew
 Wilson, Rodolfo Zitellini.
 
 Colaboradores de fuenteas tipográficas:
index f86b286c9840373b09ff82537bcf3df6fc5bbfd2..aaf2d90ad073cc0dca14f0bdb0c1c167d8d51f5b 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @ignore
-    Translation of GIT committish: c32e3fdb278522c2772cbbe01f532ed24cb9d838
+    Translation of GIT committish: 751d4ab14fbbcf387cc5ca0b50c70d10db2b08f5
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -33,11 +33,111 @@ NOTE:
   * don't duplicate entries from news-front.itexi
 @end ignore
 
+@newsItem
+@subsubheading Séptima versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.63!  @emph{30 de mayo de 2011}
+
+Ha salido LilyPond 2.13.63; ésta es la sexta versión candidata al
+lanzamiento de la inminente versión estable 2.14.  Se invita a los
+usuarios a que hagan experimentos con esta versión.  Las
+funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de
+@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas.
+
+No existe ningún problema conocido calificado como crítico en esta
+versión.  Si no se encuentra ningún bug crítico, el lanzamiento de la
+versión oficial 2.14.0 se producirá el 6 de junio de 2011.  Si
+descubre algún problema, le rogamos que nos envíe
+@ref{Informes de fallos}.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.13.62!  @emph{24 de mayo de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.13.62.  Esta
+versión contiene el conjunto habitual de correcciones de fallos.
+
+Tenga en cuenta que esta @strong{no} es la siguiente versión candidata
+al lanzamiento estable, debido a que aún permanecen unos cuantos
+fallos críticos.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.13.61!  @emph{1 de mayo de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.13.61.  Esta
+versión contiene el conjunto habitual de correcciones de fallos.
+
+Tenga en cuenta que esta @strong{no} es la siguiente versión candidata
+al lanzamiento estable, debido a que aún permanecen unos cuantos
+fallos críticos.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.13.60!  @emph{16 de abril de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.13.60.  Esta
+versión contiene el conjunto habitual de correcciones de fallos.
+
+Tenga en cuenta que esta @strong{no} es la siguiente versión candidata
+al lanzamiento estable, debido a que aún permanecen unos cuantos
+fallos críticos.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading Artículo en la revista Linux Journal Magazine (@emph{abril de 2011})
+
+La revista @uref{http://www.linux-magazine.com,Linux Magazine} publica
+un artículo en su edición de mayo de 2011 bajo el título
+@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf,
+Projects on the Move}.  Es una introducción a MuseScore, LilyPond y
+Chordii.  La autora Carla Schroder dice que @qq{LilyPond se maneja a
+partir de la línea de órdenes, pero que no le asuste la falta de una
+interfaz gráfica; LilyPond es amigable para el usuario y fácil de
+aprender}, y aporta un ejemplo práctico.
+@newsEnd
+
+@newsItem
+@subsubheading ¡Lanzado LilyPond 2.13.59!  @emph{10 de abril de 2011}
+
+Nos complace anunciar el lanzamiento de LilyPond 2.13.59.  Esta
+versión contiene el conjunto habitual de correcciones de fallos.
+
+Tenga en cuenta que esta @strong{no} es la siguiente versión candidata
+al lanzamiento estable, debido a que aún permanecen unos cuantos
+fallos críticos.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading Sexta versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.58!  @emph{7 de abril de 2011}
+
+Ha salido LilyPond 2.13.58; ésta es la quinta versión candidata al
+lanzamiento de la inminente versión estable 2.14.  Se invita a los
+usuarios a que hagan experimentos con esta versión.  Las
+funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de
+@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas.
+
+No existe ningún problema conocido calificado como crítico en esta
+versión.  Si no se encuentra ningún bug crítico, el lanzamiento de la
+versión oficial 2.14.0 se producirá el 14 de abril de 2011.  Si
+descubre algún problema, le rogamos que nos envíe
+@ref{Informes de fallos}.
+
+@newsEnd
+
 
 @newsItem
 @subsubheading Quinta versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.57!  @emph{3 de abril de 2011}
 
-Ha salido LilyPond 2.13.57; ésta es la cuarta versión candidata al
+Ha salido LilyPond 2.13.57; ésta es la quinta versión candidata al
 lanzamiento de la inminente versión estable 2.14.  Se invita a los
 usuarios a que hagan experimentos con esta versión.  Las
 funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de
index acbff571193f2ae3dda76c6029fb06f61c346c51..71865e7788d009dbe7bfe55f25f539128fb3cf39 100644 (file)
@@ -35,7 +35,8 @@ expressions automatically, and can be used to greatly simplify the
 input file.
 
 @menu
-* Music function syntax::
+* Music function definitions::
+* Music function usage::
 * Simple substitution functions::
 * Intermediate substitution functions::
 * Mathematics in functions::
@@ -44,10 +45,10 @@ input file.
 @end menu
 
 
-@node Music function syntax
-@subsection Music function syntax
+@node Music function definitions
+@subsection Music function definitions
 
-The general form for music functions is:
+The general form for defining music functions is:
 
 @example
 function =
@@ -66,7 +67,8 @@ where
 
 @item @code{@var{typeN?}}
 @tab a scheme @emph{type predicate} for which @code{@var{argN}}
-must return @code{#t}.
+must return @code{#t}.  Some of these predicates are specially
+recognized by the parser, see below.
 
 @item @code{@var{music}}
 @tab A music expression, optionally written in scheme, with any
@@ -79,10 +81,20 @@ function arguments (eg., @w{@samp{$(cons arg1 arg2)}}).
 @end multitable
 
 @noindent
-For a list of available type predicates, see
-@ruser{Predefined type predicates}.  User-defined type predicates
-are also allowed.
+Some type predicates are specially recognized by the parser and will
+make the parser look for the respective arguments in Lilypond syntax
+rather than in Scheme syntax.  Currently these are @code{ly:music?},
+@code{markup?}, @code{ly:pitch?}, and @code{ly:duration?}.
+
+If you really want to input one of those items as a Scheme rather than a
+Lilypond expression, you may write them as a Scheme expression that
+calls @code{ly:export} at its outermost level.
+
+Other type predicates, including user-defined ones, will make the
+respective argument only be accepted as a Scheme expression.
 
+For a list of available type predicates, see
+@ruser{Predefined type predicates}.
 
 @seealso
 
@@ -95,6 +107,48 @@ Installed Files:
 @file{scm/lily.scm}.
 
 
+@node Music function usage
+@subsection Music function usage
+Music functions may currently be used in three places.  Depending on
+where they are used, restrictions apply in order to be able to parse
+them unambiguously.  The result a music function returns must be
+compatible with the context in which it is called.
+
+@itemize
+@item
+At top level in a music expression.  There are no special restrictions
+on the argument list.  Using the @code{#@{}@dots{}@code{#@}} construct
+produces a sequential music expression and consequently can only applied
+in this context.
+
+@item
+As a post-event.  All trailing arguments of the music function with the
+predicate @code{ly:music?} will get parsed also as post-events.  Note
+that returning post-events will also be acceptable for music functions
+called at top level, leading to a result roughly equivalent to
+@example
+s 1*0-\fun
+@end example
+
+@item
+As a chord constituent.  All trailing arguments of the music function
+with the predicate @code{ly:music?} will get parsed also as chord
+constituents.
+@end itemize
+
+@noindent
+The special rules for trailing arguments make it possible to write
+polymorphic functions like @code{\tweak} that can be applied to
+different constructs.
+
+There is another somewhat special rule: if you have a predicate
+@code{ly:music?} directly before a @code{ly:duration?} predicate, then
+the corresponding music expression must be either a music identifier, or
+literal sequential or parallel music enclosed in
+@code{@{}@dots{}@code{@}} or @code{<<}@dots{}@code{>>} explicitly.
+Otherwise, Lilypond could get confused about where the music ends and
+the duration starts.
+
 @node Simple substitution functions
 @subsection Simple substitution functions
 
index cd7cd48e69ebba73eaf4a938a72432680401afa9..cf4c5559440fb65eb950ce549f6c9955f05ce479 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Dernière mise à jour Thu Mar 24 14:52:33 UTC 2011
+@emph{Dernière mise à jour Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -84,7 +84,7 @@ oui
 @item
 1 La gravure musicale
 @*
-5297
+5296
 @tab Jean-Charles Malahieude
 @*
 John Mandereau
@@ -313,7 +313,7 @@ oui
 @item
 4 Retouche de partition
 @*
-15408
+15393
 @tab Valentin Villenave
 @*
 Nicolas Klutchnikoff
@@ -472,7 +472,7 @@ partiellement
 @item
 1.1 Hauteurs
 @*
-4479
+4502
 @tab Frédéric Chiasson
 @tab Valentin Villenave
 @*
@@ -491,7 +491,7 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #40fe23">partiellement</span>
+<span style="background-color: #47ff24">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -565,7 +565,7 @@ oui
 @item
 1.4 Répétitions et reprises
 @*
-930
+945
 @tab Valentin Villenave
 @*
 Jean-Charles Malahieude
@@ -586,17 +586,17 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #39ff22">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
 1.5 Notes simultanées
 @*
-2163
+2216
 @tab Frédéric Chiasson
 @*
 Valentin Villenave
@@ -619,7 +619,7 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #33ff21">partiellement</span>
+<span style="background-color: #7dff2b">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -629,7 +629,7 @@ partiellement
 @item
 1.6 Notation sur la portée
 @*
-2056
+2345
 @tab Valentin Villenave
 @*
 Jean-Charles Malahieude
@@ -648,11 +648,11 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #9eff30">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
@@ -733,11 +733,11 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #25fe1f">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
@@ -774,7 +774,7 @@ oui
 @item
 2.2 Instruments utilisant des portées multiples
 @*
-838
+864
 @tab Valentin Villenave
 @*
 Jean-Charles Malahieude
@@ -836,7 +836,7 @@ oui
 @item
 2.4 Instruments à cordes frettées
 @*
-2640
+2649
 @tab Matthieu Jacquot
 @tab Jean-Charles Malahieude
 @tab 
@@ -1008,7 +1008,7 @@ partiellement
 @item
 3 Généralités en matière d'entrée et sortie
 @*
-7069
+7671
 @tab Jean-Charles Malahieude
 @*
 Valentin Villenave
@@ -1017,27 +1017,27 @@ Valentin Villenave
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #dfef77">partiellement (83 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement (83 %)
 @end ifnothtml
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #91ff2e">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
 4 Gestion de l'espace
 @*
-11017
+11087
 @tab Frédéric Chiasson
 @*
 Jean-Charles Malahieude
@@ -1275,7 +1275,7 @@ oui
 @item
 3 Association musique-texte avec @command{lilypond-book}
 @*
-3764
+3952
 @tab Jean-Charles Malahieude
 @tab 
 @tab 
@@ -1430,7 +1430,7 @@ oui
 @item
 Introduction
 @*
-4506
+4564
 @tab Gauvain Pocentek
 @*
 Jean-Charles Malahieude
@@ -1461,7 +1461,7 @@ oui
 @item
 Téléchargement
 @*
-1183
+1195
 @tab Jean-Charles Malahieude
 @*
 John Mandereau
@@ -1480,17 +1480,17 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #25fe1f">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
 Manuels
 @*
-1200
+1203
 @tab John Mandereau
 @tab Jean-Charles Malahieude
 @tab 
@@ -1507,11 +1507,11 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #25fe1f">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
index 8ee58fd6832adc117ba7abfd34bc14516136f4ea..983c7b43b66794d878dd929ca4870f4a500699f9 100644 (file)
@@ -3,7 +3,6 @@ depth = ../..
 SUBDIRS = web learning texidocs usage
 STEPMAKE_TEMPLATES = documentation
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
-NO_PDF_FILES = 1
 
 EXTRA_DIST_FILES = web.texi
 
index 058cb51fd5e8cc8acef0acf6f97c5ee5d1c2d052..cd7184c110fe8585814d67ef33c98713f0b7fbd8 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Last updated Thu Mar 24 14:52:33 UTC 2011
+@emph{Last updated Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -165,7 +165,7 @@ partially
 @item
 4 A kimenet finomhangolása
 @*
-15408
+15393
 @tab Harmath Dénes
 @tab 
 @tab 
@@ -336,6 +336,33 @@ yes
 partially
 @end ifnothtml
 @tab pre-GDP
+@item
+3 A @command{lilypond-book} használata
+@*
+3952
+@tab Team-hu
+@tab 
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab pre-GDP
 @end multitable
 
 
@@ -405,7 +432,7 @@ partially
 @item
 Bevezetés
 @*
-4506
+4564
 @tab Harmath Dénes
 @tab 
 @tab 
@@ -432,7 +459,7 @@ yes
 @item
 Letöltés
 @*
-1183
+1195
 @tab Harmath Dénes
 @tab 
 @tab 
@@ -449,17 +476,17 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">yes</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-yes
+partially
 @end ifnothtml
 @tab pre-GDP
 @item
 Dokumentáció
 @*
-1200
+1203
 @tab Harmath Dénes
 @tab 
 @tab 
@@ -476,11 +503,11 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">yes</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-yes
+partially
 @end ifnothtml
 @tab pre-GDP
 @item
diff --git a/Documentation/hu/usage/lilypond-book.itely b/Documentation/hu/usage/lilypond-book.itely
new file mode 100644 (file)
index 0000000..b331b8a
--- /dev/null
@@ -0,0 +1,1256 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+@ignore
+    Translation of GIT committish: f77212d801fa4603bf596a19cecf5a068f1d9d85
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.13.36"
+
+@c Note: keep this node named so that `info lilypond-book' brings you here.
+@node lilypond-book
+@chapter A @command{lilypond-book} használata
+@translationof lilypond-book
+
+Amennyiben egy dokumentumba kottapéldákat szeretnénk beszúrni, megtehetjük,
+hogy azok képeit egyesével létrehozzuk a LilyPond segítségével PostScript
+vagy PNG formátumban, és mint bármilyen más képeket, beillesztjük azokat egy
+@LaTeX{} vagy HTML dokumentumba.
+
+A @command{lilypond-book} ennek a folyamatnak az automatizálására szolgál:
+ez a program kiszedi a LilyPond kódrészleteket egy dokumentumból, lefordítja
+őket a @command{lilypond} segítségével, és az így kapott képeket beilleszti
+az eredeti kódrészletek helyére. A kottakép méretei igazodnak a dokumentum
+elrendezéséhez.
+
+A @command{lilypond-book} egy különálló parancssori program; a parancssoros
+programok futtatásának módját a @ref{Parancssori használat} írja le bővebben.
+
+A @command{lilypond-book} jelenleg a @LaTeX{}, HTML, Texinfo és DocBook
+formátumokat támogatja.
+
+@cindex texinfo
+@cindex latex
+@cindex texinfo
+@cindex texi
+@cindex html
+@cindex docbook
+@cindex dokumentumok, kottapéldák
+@cindex HTML, kottapéldák
+@cindex Texinfo, kottapéldák
+@cindex DocBook, kottapéldák
+@cindex @LaTeX{}, kottapéldák
+
+@menu
+* Egy kottapéldákat tartalmazó dokumentum::
+* Zene és szöveg integrációja::
+* Kottapéldák paraméterei::
+* A lilypond-book futtatása::
+* Fájlkiterjesztések::
+* lilypond-book sablonok::
+* Közös tartalomjegyzék::
+* További módszerek zene és szöveg kombinálására::
+@end menu
+
+
+@node Egy kottapéldákat tartalmazó dokumentum
+@section Egy kottapéldákat tartalmazó dokumentum
+@translationof An example of a musicological document
+
+@cindex zenetudomány
+Bizonyos dokumentumok kottapéldákat tartalmaznak. Ezek között vannak
+zenetudományi értekezések, énekeskönyvek, vagy ehhez hasonló kézikönyvek.
+Ezeket úgy is el lehet készíteni, hogy a szövegbe beillesztjük a kottaábrákat.
+Azonban ahhoz, hogy ne kelljen minden egyes kottarészlet szedését külön
+elvégezni, a HTML, @LaTeX{}, Texinfo és DocBook formátumú dokumentumok esetén
+mód nyílik ennek automatizálására.
+
+Egy @code{lilypond-book} nevű parancsfájl a LilyPond nyelvén írt
+kódrészleteket szépen formázott kottapéldákká alakítja át. Íme egy rövid,
+magyarázatokkal ellátott @LaTeX{} példa.
+
+@subheading Bemenet
+
+@quotation
+@verbatim
+\documentclass[a4paper]{article}
+
+\begin{document}
+
+A \verb+lilypond-book+ segítségével feldolgozott dokumentumok
+kottapéldákat tartalmazhatnak. Például:
+
+\begin{lilypond}
+\relative c' {
+  c2 e2 \times 2/3 { f8 a b } a2 e4
+}
+\end{lilypond}
+
+A beállításokat szögletes zárójelbe kell tenni:
+
+\begin{lilypond}[fragment,quote,staffsize=26,verbatim]
+  c'4 f16
+\end{lilypond}
+
+A nagyobb kottapéldákat ki lehet emelni külön fájlba, majd beilleszteni
+őket a \verb+\lilypondfile+ paranccsal:
+
+\lilypondfile[quote,noindent]{screech-boink.ly}
+
+\end{document}
+@end verbatim
+@end quotation
+
+@subheading Feldolgozás
+
+A fenti dokumentumot egy @file{lilybook.lytex} nevű fájlba mentve futtassuk le
+a következő parancsokat:
+
+@c keep space after @version{} so TeX doesn't choke
+@example
+lilypond-book --output=out --pdf lilybook.lytex
+@emph{lilypond-book (GNU LilyPond) @version{} }
+@emph{Reading lilybook.lytex...}
+@emph{...}
+@emph{Compiling lilybook.tex...}
+cd out
+pdflatex lilybook
+@emph{...}
+xpdf lilybook
+@emph{(az @command{xpdf} helyére értelemszerűen tetszőleges PDF-nézegető
+kerülhet)}
+@end example
+
+A @command{lilypond-book} és a @command{latex} rengeteg ideiglenes fájlt
+hoznak létre. Annak érdekében, hogy ezek külön alkönyvtárba kerüljenek, a
+@code{--output=@var{alkönyvtár}} opciót kell megadni.
+
+Lent látható a fenti @LaTeX{} példa kimenete.@footnote{Ezt a dokumentumot a
+Texinfo generálta, így apró eltérések lehetnek.} Ezzel elsajátítottuk a
+lilypond-book használatának alapjait.
+
+@page
+
+@subheading Kimenet
+
+A @command{lilypond-book} segítségével feldolgozott dokumentumok
+kottapéldákat tartalmazhatnak. Például:
+
+@lilypond
+\relative c' {
+  c2 e2 \times 2/3 { f8 a b } a2 e4
+}
+@end lilypond
+
+A beállításokat szögletes zárójelbe kell tenni:
+
+@lilypond[fragment,quote,staffsize=26,verbatim]
+c'4 f16
+@end lilypond
+
+A nagyobb kottapéldákat ki lehet emelni külön fájlba, majd beilleszteni
+őket a @code{\lilypondfile} paranccsal:
+
+@lilypondfile[quote,noindent]{screech-boink.ly}
+
+
+@page
+
+@node Integrating music and text
+@section Integrating music and text
+
+Here we explain how to integrate LilyPond with various output formats.
+
+@menu
+* LaTeX::
+* Texinfo::
+* HTML::
+* DocBook::
+@end menu
+
+@node LaTeX
+@subsection @LaTeX{}
+
+@LaTeX{} is the de-facto standard for publishing layouts in the exact
+sciences.  It is built on top of the @TeX{} typesetting engine,
+providing the best typography available anywhere.
+
+See
+@uref{http://@/www@/.ctan@/.org/@/tex@/-archive/@/info/@/lshort/@/english/,
+@emph{The Not So Short Introduction to @LaTeX{}}} for an overview on how
+to use @LaTeX{}.
+
+Music is entered using
+
+@example
+\begin@{lilypond@}[options,go,here]
+  YOUR LILYPOND CODE
+\end@{lilypond@}
+@end example
+
+@noindent
+or
+
+@example
+\lilypondfile[options,go,here]@{@var{filename}@}
+@end example
+
+@noindent
+or
+
+@example
+\lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
+@end example
+
+Additionally, @code{\lilypondversion} displays the current version
+of lilypond.
+Running @command{lilypond-book} yields a file that can be further
+processed with @LaTeX{}.
+
+We show some examples here.  The @code{lilypond} environment
+
+@example
+\begin@{lilypond@}[quote,fragment,staffsize=26]
+  c' d' e' f' g'2 g'2
+\end@{lilypond@}
+@end example
+
+@noindent
+produces
+
+@lilypond[quote,fragment,staffsize=26]
+c' d' e' f' g'2 g'2
+@end lilypond
+
+The short version
+
+@example
+\lilypond[quote,fragment,staffsize=11]@{<c' e' g'>@}
+@end example
+
+@noindent
+produces
+
+@lilypond[quote,fragment,staffsize=11]{<c' e' g'>}
+
+@noindent
+Currently, you cannot include @code{@{} or @code{@}} within
+@code{\lilypond@{@}}, so this command is only useful with the
+@code{fragment} option.
+
+The default line width of the music will be adjusted by examining the
+commands in the document preamble, the part of the document before
+@code{\begin@{document@}}.  The @command{lilypond-book} command sends
+these to @LaTeX{} to find out how wide the text is.  The line width for
+the music fragments is then adjusted to the text width.  Note that this
+heuristic algorithm can fail easily; in such cases it is necessary to
+use the @code{line-width} music fragment option.
+
+@cindex titling and lilypond-book
+@cindex \header in @LaTeX{} documents
+
+Each snippet will call the following macros if they have been defined by
+the user:
+
+@itemize @bullet
+@item @code{\preLilyPondExample} called before the music,
+
+@item @code{\postLilyPondExample} called after the music,
+
+@item @code{\betweenLilyPondSystem[1]} is called between systems if
+@code{lilypond-book} has split the snippet into several PostScript
+files.  It must be defined as taking one parameter and will be
+passed the number of files already included in this snippet.
+The default is to simply insert a @code{\linebreak}.
+@end itemize
+
+@ignore
+Broken stuff.  :(
+
+@cindex Latex, feta symbols
+@cindex fetachar
+
+To include feta symbols (such as flat, segno, etc) in a LaTeX
+document, use @code{\input@{titledefs@}}
+
+@example
+\documentclass[a4paper]@{article@}
+
+\input@{titledefs@}
+
+\begin@{document@}
+
+\fetachar\fetasharp
+
+\end@{document@}
+@end example
+
+The font symbol names are defined in the file feta20.tex; to find
+the location of this file, use the command
+
+@example
+kpsewhich feta20.tex
+@end example
+
+@end ignore
+
+@snippets
+
+Sometimes it is useful to display music elements (such as ties and slurs)
+as if they continued after the end of the fragment.  This can be done by
+breaking the staff and suppressing inclusion of the rest of the LilyPond
+output.
+
+In @LaTeX{}, define @code{\betweenLilyPondSystem} in such a way that
+inclusion of other systems is terminated once the required number of
+systems are included.  Since @code{\betweenLilyPondSystem} is first
+called @emph{after} the first system, including only the first system
+is trivial.
+
+@example
+\def\betweenLilyPondSystem#1@{\endinput@}
+
+\begin@{lilypond@}[fragment]
+  c'1\( e'( c'~ \break c' d) e f\)
+\end@{lilypond@}
+@end example
+
+If a greater number of systems is requested, a @TeX{} conditional must
+be used before the @code{\endinput}.  In this example, replace @q{2} by
+the number of systems you want in the output.
+
+@example
+\def\betweenLilyPondSystem#1@{
+    \ifnum#1<2\else\expandafter\endinput\fi
+@}
+@end example
+
+@noindent
+(Since @code{\endinput} immediately stops the processing of the current
+input file we need @code{\expandafter} to delay the call of @code{\endinput}
+after executing @code{\fi} so that the @code{\if}-@code{\fi} clause is
+balanced.)
+
+Remember that the definition of @code{\betweenLilyPondSystem} is
+effective until @TeX{} quits the current group (such as the @LaTeX{}
+environment) or is overridden by another definition (which is, in
+most cases, for the rest of the document).  To reset your
+definition, write
+
+@example
+\let\betweenLilyPondSystem\undefined
+@end example
+
+@noindent
+in your @LaTeX{} source.
+
+This may be simplified by defining a @TeX{} macro
+
+@example
+\def\onlyFirstNSystems#1@{
+    \def\betweenLilyPondSystem##1@{%
+      \ifnum##1<#1\else\expandafter\endinput\fi@}
+@}
+@end example
+
+@noindent
+and then saying only how many systems you want before each fragment,
+
+@example
+\onlyFirstNSystems@{3@}
+\begin@{lilypond@}...\end@{lilypond@}
+\onlyFirstNSystems@{1@}
+\begin@{lilypond@}...\end@{lilypond@}
+@end example
+
+
+@seealso
+There are specific @command{lilypond-book} command line options and
+other details to know when processing @LaTeX{} documents, see
+@ref{Invoking lilypond-book}.
+
+
+@node Texinfo
+@subsection Texinfo
+
+Texinfo is the standard format for documentation of the GNU project.  An
+example of a Texinfo document is this manual.  The HTML, PDF, and Info
+versions of the manual are made from the Texinfo document.
+
+In the input file, music is specified with
+
+@example
+@@lilypond[options,go,here]
+  YOUR LILYPOND CODE
+@@end lilypond
+@end example
+
+@noindent
+or
+
+@example
+@@lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
+@end example
+
+@noindent
+or
+
+@example
+@@lilypondfile[options,go,here]@{@var{filename}@}
+@end example
+
+Additionally, @code{@@lilypondversion} displays the current version
+of lilypond.
+
+When @command{lilypond-book} is run on it, this results in a Texinfo
+file (with extension @file{.texi}) containing @code{@@image} tags for
+HTML, Info and printed output.  @command{lilypond-book} generates images
+of the music in EPS and PDF formats for use in the printed output, and
+in PNG format for use in HTML and Info output.
+
+We show two simple examples here.  A @code{lilypond} environment
+
+@example
+@@lilypond[fragment]
+c' d' e' f' g'2 g'
+@@end lilypond
+@end example
+
+@noindent
+produces
+
+@lilypond[fragment]
+c' d' e' f' g'2 g'
+@end lilypond
+
+The short version
+
+@example
+@@lilypond[fragment,staffsize=11]@{<c' e' g'>@}
+@end example
+
+@noindent
+produces
+
+@lilypond[fragment,staffsize=11]{<c' e' g'>}
+
+Contrary to @LaTeX{}, @code{@@lilypond@{...@}} does not generate an
+in-line image.  It always gets a paragraph of its own.
+
+
+@node HTML
+@subsection HTML
+
+Music is entered using
+
+@example
+<lilypond fragment relative=2>
+\key c \minor c4 es g2
+</lilypond>
+@end example
+
+@noindent
+@command{lilypond-book} then produces an HTML file with appropriate image
+tags for the music fragments:
+
+@lilypond[fragment,relative=2]
+\key c \minor c4 es g2
+@end lilypond
+
+For inline pictures, use @code{<lilypond ... />}, where the options
+are separated by a colon from the music, for example
+
+@example
+Some music in <lilypond relative=2: a b c/> a line of text.
+@end example
+
+To include separate files, say
+
+@example
+<lilypondfile @var{option1} @var{option2} ...>@var{filename}</lilypondfile>
+@end example
+
+For a list of options to use with the @code{lilypond} or
+@code{lilypondfile} tags, see @ref{Music fragment options}.
+
+Additionally, @code{<lilypondversion/>} displays the current version
+of lilypond.
+
+
+@cindex titling in HTML
+@cindex preview image
+@cindex thumbnail
+
+@node DocBook
+@subsection DocBook
+
+For inserting LilyPond snippets it is good to keep the conformity of our
+DocBook document, thus allowing us to use DocBook editors, validation
+etc.  So we don't use custom tags, only specify a convention based on the
+standard DocBook elements.
+
+@subheading Common conventions
+
+For inserting all type of snippets we use the @code{mediaobject} and
+@code{inlinemediaobject} element, so our snippets can be formatted
+inline or not inline.  The snippet formatting options are always
+provided in the @code{role} property of the innermost element (see in
+next sections).  Tags are chosen to allow DocBook editors format the
+content gracefully.  The DocBook files to be processed with
+@command{lilypond-book} should have the extension @file{.lyxml}.
+
+@subheading Including a LilyPond file
+
+This is the most simple case.  We must use the @file{.ly} extension for
+the included file, and insert it as a standard @code{imageobject}, with
+the following structure:
+
+@example
+<mediaobject>
+  <imageobject>
+    <imagedata fileref="music1.ly" role="printfilename" />
+  </imageobject>
+</mediaobject>
+@end example
+
+Note that you can use @code{mediaobject} or @code{inlinemediaobject}
+as the outermost element as you wish.
+
+@subheading Including LilyPond code
+
+Including LilyPond code is possible by using a @code{programlisting},
+where the language is set to @code{lilypond} with the following
+structure:
+
+@example
+<inlinemediaobject>
+  <textobject>
+    <programlisting language="lilypond" role="fragment verbatim staffsize=16 ragged-right relative=2">
+\context Staff \with @{
+  \remove Time_signature_engraver
+  \remove Clef_engraver@}
+  @{ c4( fis) @}
+    </programlisting>
+  </textobject>
+</inlinemediaobject>
+@end example
+
+As you can see, the outermost element is a @code{mediaobject} or
+@code{inlinemediaobject}, and there is a @code{textobject} containing
+the @code{programlisting} inside.
+
+@subheading Processing the DocBook document
+
+Running @command{lilypond-book} on our @file{.lyxml} file will create a
+valid DocBook document to be further processed with @file{.xml}
+extension.  If you use
+@uref{http://@/dblatex@/.sourceforge@/.net@/,dblatex}, it will create a
+PDF file from this document automatically.  For HTML (HTML Help,
+JavaHelp etc.) generation you can use the official DocBook XSL
+stylesheets, however, it is possible that you have to make some
+customization for it.
+
+
+@node Music fragment options
+@section Music fragment options
+
+In the following, a @q{LilyPond command} refers to any command described
+in the previous sections which is handled by @command{lilypond-book} to
+produce a music snippet.  For simplicity, LilyPond commands are only
+shown in @LaTeX{} syntax.
+
+Note that the option string is parsed from left to right; if an option
+occurs multiple times, the last one is taken.
+
+The following options are available for LilyPond commands:
+
+@table @code
+@item staffsize=@var{ht}
+Set staff size to @var{ht}, which is measured in points.
+
+@item ragged-right
+Produce ragged-right lines with natural spacing, i.e.,
+@code{ragged-right = ##t} is added to the LilyPond snippet.  This is the
+default for the @code{\lilypond@{@}} command if no @code{line-width}
+option is present.  It is also the default for the @code{lilypond}
+environment if the @code{fragment} option is set, and no line width is
+explicitly specified.
+
+@item noragged-right
+For single-line snippets, allow the staff length to be stretched to
+equal that of the line width, i.e., @code{ragged-right = ##f} is
+added to the LilyPond snippet.
+
+@item line-width
+@itemx line-width=@var{size}\@var{unit}
+Set line width to @var{size}, using @var{unit} as units.  @var{unit} is
+one of the following strings: @code{cm}, @code{mm}, @code{in}, or
+@code{pt}.  This option affects LilyPond output (this is, the staff
+length of the music snippet), not the text layout.
+
+If used without an argument, set line width to a default value (as
+computed with a heuristic algorithm).
+
+If no @code{line-width} option is given, @command{lilypond-book} tries to
+guess a default for @code{lilypond} environments which don't use the
+@code{ragged-right} option.
+
+@item notime
+Do not print the time signature, and turns off the timing (time signature,
+bar lines) in the score.
+
+@item fragment
+Make @command{lilypond-book} add some boilerplate code so that you can
+simply enter, say,
+
+@example
+c'4
+@end example
+
+@noindent
+without @code{\layout}, @code{\score}, etc.
+
+@item nofragment
+Do not add additional code to complete LilyPond code in music snippets.
+Since this is the default, @code{nofragment} is redundant normally.
+
+@item indent=@var{size}\@var{unit}
+Set indentation of the first music system to @var{size}, using
+@var{unit} as units.  @var{unit} is one of the following strings:
+@code{cm}, @code{mm}, @code{in}, or @code{pt}.  This option affects
+LilyPond, not the text layout.
+
+@item noindent
+Set indentation of the first music system to zero.  This option affects
+LilyPond, not the text layout.  Since no indentation is the default,
+@code{noindent} is redundant normally.
+
+@item quote
+Reduce line length of a music snippet by @math{2*0.4}@dmn{in} and put
+the output into a quotation block.  The value @q{0.4@dmn{in}} can be
+controlled with the @code{exampleindent} option.
+
+@item exampleindent
+Set the amount by which the @code{quote} option indents a music snippet.
+
+@item relative
+@itemx relative=@var{n}
+Use relative octave mode.  By default, notes are specified relative to
+middle@tie{}C.  The optional integer argument specifies the octave of
+the starting note, where the default @code{1} is middle C.
+@code{relative} option only works when @code{fragment} option is set,
+so @code{fragment} is automatically implied by @code{relative},
+regardless of the presence of any @code{(no)fragment} option in the
+source.
+@end table
+
+LilyPond also uses @command{lilypond-book} to produce its own
+documentation.  To do that, some more obscure music fragment options are
+available.
+
+@table @code
+@item verbatim
+The argument of a LilyPond command is copied to the output file and
+enclosed in a verbatim block, followed by any text given with the
+@code{intertext} option (not implemented yet); then the actual music is
+displayed.  This option does not work well with @code{\lilypond@{@}} if
+it is part of a paragraph.
+
+If @code{verbatim} is used in a @code{lilypondfile} command, it is
+possible to enclose verbatim only a part of the source file.  If the
+source file contain a comment containing @samp{begin verbatim} (without
+quotes), quoting the source in the verbatim block will start after the
+last occurrence of such a comment; similarly, quoting the source verbatim
+will stop just before the first occurrence of a comment containing
+@samp{end verbatim}, if there is any.  In the following source file
+example, the music will be interpreted in relative mode, but the
+verbatim quote will not show the @code{relative} block, i.e.
+
+@example
+\relative c' @{ % begin verbatim
+  c4 e2 g4
+  f2 e % end verbatim
+@}
+@end example
+
+@noindent
+will be printed with a verbatim block like
+
+@example
+  c4 e2 g4
+  f2 e
+@end example
+
+@noindent
+If you would like to translate comments and variable names in verbatim
+output but not in the sources, you may set the environment variable
+@code{LYDOC_LOCALEDIR} to a directory path; the directory should
+contain a tree of @file{.mo} message catalogs with @code{lilypond-doc}
+as a domain.
+
+@item addversion
+(Only for Texinfo output.)  Prepend line @code{\version
+@@w@{"@@version@{@}"@}} to @code{verbatim} output.
+
+@item texidoc
+(Only for Texinfo output.)  If @command{lilypond} is called with the
+@option{--header=@/texidoc} option, and the file to be processed is
+called @file{foo.ly}, it creates a file @file{foo.texidoc} if there
+is a @code{texidoc} field in the @code{\header}.  The @code{texidoc}
+option makes @command{lilypond-book} include such files, adding its
+contents as a documentation block right before the music snippet.
+
+Assuming the file @file{foo.ly} contains
+
+@example
+\header @{
+  texidoc = "This file demonstrates a single note."
+@}
+@{ c'4 @}
+@end example
+
+@noindent
+and we have this in our Texinfo document @file{test.texinfo}
+
+@example
+@@lilypondfile[texidoc]@{foo.ly@}
+@end example
+
+@noindent
+the following command line gives the expected result
+
+@example
+lilypond-book --pdf --process="lilypond \
+  -dbackend=eps --header=texidoc" test.texinfo
+@end example
+
+Most LilyPond test documents (in the @file{input} directory of the
+distribution) are small @file{.ly} files which look exactly like this.
+
+For localization purpose, if the Texinfo document contains
+@code{@@documentlanguage @var{LANG}} and @file{foo.ly} header
+contains a @code{texidoc@var{LANG}} field, and if @command{lilypond}
+is called with @option{--header=@/texidoc@var{LANG}}, then
+@file{foo.texidoc@var{LANG}} will be included instead of
+@file{foo.texidoc}.
+
+@item lilyquote
+(Only for Texinfo output.)  This option is similar to quote, but only
+the music snippet (and the optional verbatim block implied by
+@code{verbatim} option) is put into a quotation block.  This option is
+useful if you want to @code{quote} the music snippet but not the
+@code{texidoc} documentation block.
+
+@item doctitle
+(Only for Texinfo output.) This option works similarly to
+@code{texidoc} option: if @command{lilypond} is called with the
+@option{--header=@/doctitle} option, and the file to be processed is
+called @file{foo.ly} and contains a @code{doctitle} field in the
+@code{\header}, it creates a file @file{foo.doctitle}.  When
+@code{doctitle} option is used, the contents of @file{foo.doctitle},
+which should be a single line of @var{text}, is inserted in the
+Texinfo document as @code{@@lydoctitle @var{text}}.
+@code{@@lydoctitle} should be a macro defined in the Texinfo document.
+The same remark about @code{texidoc} processing with localized
+languages also applies to @code{doctitle}.
+
+@item nogettext
+(Only for Texinfo output.) Do not translate comments and variable
+names in the snippet quoted verbatim.
+
+@item printfilename
+If a LilyPond input file is included with @code{\lilypondfile}, print
+the file name right before the music snippet.  For HTML output, this
+is a link.  Only the base name of the file is printed, i.e. the
+directory part of the file path is stripped.
+
+@end table
+
+
+@node Invoking lilypond-book
+@section Invoking @command{lilypond-book}
+
+@command{lilypond-book} produces a file with one of the following
+extensions: @file{.tex}, @file{.texi}, @file{.html} or @file{.xml},
+depending on the output format.  All of @file{.tex}, @file{.texi} and
+@file{.xml} files need further processing.
+
+@subheading Format-specific instructions
+
+@subsubheading @LaTeX{}
+
+There are two ways of processing your @LaTeX{} document for printing or
+publishing: getting a PDF file directly with PDF@LaTeX{}, or getting a
+PostScript file with @LaTeX{} via a DVI to PostScript translator like
+@command{dvips}.  The first way is simpler and recommended@footnote{Note
+that PDF@LaTeX{} and @LaTeX{} may not be both usable to compile any
+@LaTeX{} document, that is why we explain the two ways.}, and whichever
+way you use, you can easily convert between PostScript and PDF with
+tools, like @command{ps2pdf} and @command{pdf2ps} included in
+Ghostscript package.
+
+To produce a PDF file through PDF@LaTeX{}, use
+
+@example
+lilypond-book --pdf yourfile.lytex
+pdflatex yourfile.tex
+@end example
+
+@cindex outline fonts
+@cindex type1 fonts
+@cindex dvips
+@cindex invoking dvips
+To produce PDF output via @LaTeX{}/@command{dvips}/@command{ps2pdf}, you
+should do
+
+@example
+lilypond-book yourfile.lytex
+latex yourfile.tex
+dvips -Ppdf yourfile.dvi
+ps2pdf yourfile.ps
+@end example
+
+@noindent
+The @file{.dvi} file created by this process will not contain
+ note heads.  This is normal; if you follow the instructions, they
+will be included in the @file{.ps} and @file{.pdf} files.
+
+Running @command{dvips} may produce some warnings about fonts; these
+are harmless and may be ignored.  If you are running @command{latex} in
+twocolumn mode, remember to add @code{-t landscape} to the
+@command{dvips} options.
+
+@subsubheading Texinfo
+
+To produce a Texinfo document (in any output format), follow the normal
+procedures for Texinfo; this is, either call @command{texi2pdf} or
+@command{texi2dvi} or @command{makeinfo}, depending on the output format
+you want to create.
+@ifinfo
+@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, and @ref{Creating
+an Info File, , , texinfo, GNU Texinfo}.
+@end ifinfo
+@ifnotinfo
+See the documentation of Texinfo for further details.
+@end ifnotinfo
+
+
+@subheading Command line options
+
+@command{lilypond-book} accepts the following command line options:
+
+@table @code
+@item -f @var{format}
+@itemx --format=@var{format}
+Specify the document type to process: @code{html}, @code{latex},
+@code{texi} (the default) or @code{docbook}.  If this option is missing,
+@command{lilypond-book} tries to detect the format automatically, see
+@ref{Filename extensions}.  Currently, @code{texi} is the same as
+@code{texi-html}.
+
+@c This complicated detail is not implemented, comment it out -jm
+@ignore
+The @code{texi} document type produces a Texinfo file with music
+fragments in the printed output only.  For getting images in the HTML
+version, the format @code{texi-html} must be used instead.
+@end ignore
+
+@item -F @var{filter}
+@itemx --filter=@var{filter}
+Pipe snippets through @var{filter}.  @code{lilypond-book} will
+not --filter and --process at the same time.  For example,
+
+@example
+lilypond-book --filter='convert-ly --from=2.0.0 -' my-book.tely
+@end example
+
+@item -h
+@itemx --help
+Print a short help message.
+
+@item -I @var{dir}
+@itemx --include=@var{dir}
+Add @var{dir} to the include path.  @command{lilypond-book} also looks
+for already compiled snippets in the include path, and does not write
+them back to the output directory, so in some cases it is necessary to
+invoke further processing commands such as @command{makeinfo} or
+@command{latex} with the same @code{-I @var{dir}} options.
+
+@item -o @var{dir}
+@itemx --output=@var{dir}
+Place generated files in directory @var{dir}.  Running
+@command{lilypond-book} generates lots of small files that LilyPond will
+process.  To avoid all that garbage in the source directory, use the
+@option{--output} command line option, and change to that directory
+before running @command{latex} or @command{makeinfo}.
+
+@example
+lilypond-book --output=out yourfile.lytex
+cd out
+...
+@end example
+
+@itemx --skip-lily-check
+Do not fail if no lilypond output is found.  It is used for LilyPond
+Info documentation without images.
+
+@itemx --skip-png-check
+Do not fail if no PNG images are found for EPS files.  It is used for
+LilyPond Info documentation without images.
+
+@itemx --lily-output-dir=@var{dir}
+Write lily-XXX files to directory @var{dir}, link into @code{--output}
+directory.  Use this option to save building time for documents in
+different directories which share a lot of identical snippets.
+
+@itemx --info-images-dir=@var{dir}
+Format Texinfo output so that Info will look for images of music in
+@var{dir}.
+
+@itemx --latex-program=@var{prog}
+Run executable @command{prog} instead of @command{latex}.  This is
+useful if your document is processed with @command{xelatex}, for
+example.
+
+@itemx --left-padding=@var{amount}
+Pad EPS boxes by this much.  @var{amount} is measured in millimeters,
+and is 3.0 by default.  This option should be used if the lines of
+music stick out of the right margin.
+
+The width of a tightly clipped system can vary, due to notation
+elements that stick into the left margin, such as bar numbers and
+instrument names.  This option will shorten each line and move each
+line to the right by the same amount.
+
+@item -P @var{command}
+@itemx --process=@var{command}
+Process LilyPond snippets using @var{command}.  The default command is
+@code{lilypond}.  @code{lilypond-book} will not @code{--filter} and
+@code{--process} at the same time.
+
+@item --pdf
+Create PDF files for use with PDF@LaTeX{}.
+
+@itemx --use-source-file-names
+Write snippet output files with the same base name as their source file.
+This option works only for snippets included with @code{lilypondfile}
+and only if directories implied by @code{--output-dir} and
+@code{--lily-output-dir} options are different.
+
+@item -V
+@itemx --verbose
+Be verbose.
+
+@item -v
+@itemx --version
+Print version information.
+@end table
+
+@knownissues
+
+The Texinfo command @code{@@pagesizes} is not interpreted.  Similarly,
+@LaTeX{} commands that change margins and line widths after the preamble
+are ignored.
+
+Only the first @code{\score} of a LilyPond block is processed.
+
+
+@node Filename extensions
+@section Filename extensions
+
+You can use any filename extension for the input file, but if you do not
+use the recommended extension for a particular format you may need to
+manually specify the output format; for details, see @ref{Invoking
+lilypond-book}.  Otherwise, @command{lilypond-book} automatically
+selects the output format based on the input filename's extension.
+
+@quotation
+@multitable @columnfractions .2 .5
+@item @strong{extension} @tab @strong{output format}
+@item
+@item @file{.html} @tab HTML
+@item @file{.htmly} @tab HTML
+@item @file{.itely} @tab Texinfo
+@item @file{.latex} @tab @LaTeX{}
+@item @file{.lytex} @tab @LaTeX{}
+@item @file{.lyxml} @tab DocBook
+@item @file{.tely} @tab Texinfo
+@item @file{.tex} @tab @LaTeX{}
+@item @file{.texi} @tab Texinfo
+@item @file{.texinfo} @tab Texinfo
+@item @file{.xml} @tab HTML
+@end multitable
+@end quotation
+
+If you use the same filename extension for the input file than the
+extension @command{lilypond-book} uses for the output file, and if the
+input file is in the same directory as @command{lilypond-book} working
+directory, you must use @code{--output} option to make
+@command{lilypond-book} running, otherwise it will exit with an error
+message like @qq{Output would overwrite input file}.
+
+
+@node lilypond-book templates
+@section lilypond-book templates
+
+These templates are for use with @code{lilypond-book}.  If you're not familiar
+with this program, please refer to
+@ref{lilypond-book}.
+
+@subsection LaTeX
+
+You can include LilyPond fragments in a LaTeX document.
+
+@example
+\documentclass[]@{article@}
+
+\begin@{document@}
+
+Normal LaTeX text.
+
+\begin@{lilypond@}
+\relative c'' @{
+  a4 b c d
+@}
+\end@{lilypond@}
+
+More LaTeX text, and options in square brackets.
+
+\begin@{lilypond@}[fragment,relative=2,quote,staffsize=26,verbatim]
+d4 c b a
+\end@{lilypond@}
+\end@{document@}
+@end example
+
+@subsection Texinfo
+
+You can include LilyPond fragments in Texinfo; in fact, this entire manual
+is written in Texinfo.
+
+@example
+\input texinfo @c -*-texinfo-*-
+@@node Top
+@@top
+
+Texinfo text
+
+@@lilypond
+\relative c' @{
+  a4 b c d
+@}
+@@end lilypond
+
+More Texinfo text, and options in brackets.
+
+@@lilypond[verbatim,fragment,ragged-right]
+d4 c b a
+@@end lilypond
+
+@@bye
+@end example
+
+
+@subsection html
+
+@example
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- header_tag -->
+<HTML>
+<body>
+
+<p>
+Documents for lilypond-book may freely mix music and text.  For
+example,
+<lilypond>
+\relative c'' @{
+  a4 b c d
+@}
+</lilypond>
+</p>
+
+<p>
+Another bit of lilypond, this time with options:
+
+<lilypond fragment quote staffsize=26 verbatim>
+a4 b c d
+</lilypond>
+</p>
+
+</body>
+</html>
+
+
+@end example
+
+@subsection xelatex
+
+@verbatim
+\documentclass{article}
+\usepackage{ifxetex}
+\ifxetex
+%xetex specific stuff
+\usepackage{xunicode,fontspec,xltxtra}
+\setmainfont[Numbers=OldStyle]{Times New Roman}
+\setsansfont{Arial}
+\else
+%This can be empty if you are not going to use pdftex
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{mathptmx}%Times
+\usepackage{helvet}%Helvetica
+\fi
+%Here you can insert all packages that pdftex also understands
+\usepackage[ngerman,finnish,english]{babel}
+\usepackage{graphicx}
+
+\begin{document}
+\title{A short document with LilyPond and xelatex}
+\maketitle
+
+Normal \textbf{font} commands inside the \emph{text} work,
+because they \textsf{are supported by \LaTeX{} and XeteX.}
+If you want to use specific commands like \verb+\XeTeX+, you
+should include them again in a \verb+\ifxetex+ environment.
+You can use this to print the \ifxetex \XeTeX{} command \else
+XeTeX command \fi which is not known to normal \LaTeX .
+
+In normal text you can easily use LilyPond commands, like this:
+
+\begin{lilypond}
+{a2 b c'8 c' c' c'}
+\end{lilypond}
+
+\noindent
+and so on.
+
+The fonts of snippets set with LilyPond will have to be set from
+inside
+of the snippet.  For this you should read the AU on how to use
+lilypond-book.
+
+\selectlanguage{ngerman}
+Auch Umlaute funktionieren ohne die \LaTeX -Befehle, wie auch alle
+anderen
+seltsamen Zeichen: __ ______, wenn sie von der Schriftart
+unterst__tzt werden.
+\end{document}
+@end verbatim
+
+
+@node Sharing the table of contents
+@section Sharing the table of contents
+
+These functions already exist in the OrchestralLily package:
+
+@example
+@url{http://repo.or.cz/w/orchestrallily.git}
+@end example
+
+For greater flexibility in text handling, some users prefer to
+export the table of contents from lilypond and read it into
+@LaTeX{}.
+
+@subsubheading Exporting the ToC from LilyPond
+
+This assumes that your score has multiple movements in the same lilypond
+output file.
+
+@smallexample
+#(define (oly:create-toc-file layout pages)
+  (let* ((label-table (ly:output-def-lookup layout 'label-page-table)))
+    (if (not (null? label-table))
+      (let* ((format-line (lambda (toc-item)
+             (let* ((label (car toc-item))
+                    (text  (caddr toc-item))
+                    (label-page (and (list? label-table)
+                                     (assoc label label-table)))
+                    (page (and label-page (cdr label-page))))
+               (format #f "~a, section, 1, @{~a@}, ~a" page text label))))
+             (formatted-toc-items (map format-line (toc-items)))
+             (whole-string (string-join formatted-toc-items ",\n"))
+             (output-name (ly:parser-output-name parser))
+             (outfilename (format "~a.toc" output-name))
+             (outfile (open-output-file outfilename)))
+        (if (output-port? outfile)
+            (display whole-string outfile)
+            (ly:warning (_ "Unable to open output file ~a for the TOC information") outfilename))
+        (close-output-port outfile)))))
+
+\paper @{
+  #(define (page-post-process layout pages) (oly:create-toc-file layout pages))
+@}
+@end smallexample
+
+@subsubheading Importing the ToC into LaTeX
+
+In LaTeX, the header should include:
+
+@c no, this doesn't require the smallexample, but since the other
+@c two blocks on this page use it, I figured I might as well
+@c user it here as well, for consistency. -gp
+@smallexample
+\usepackage@{pdfpages@}
+\includescore@{nameofthescore@}
+@end smallexample
+
+@noindent
+where @code{\includescore} is defined as:
+
+@smallexample
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \includescore@{PossibleExtension@}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Read in the TOC entries for a PDF file from the corresponding .toc file.
+% This requires some heave latex tweaking, since reading in things from a file
+% and inserting it into the arguments of a macro is not (easily) possible
+
+% Solution by Patrick Fimml on #latex on April 18, 2009:
+% \readfile@{filename@}@{\variable@}
+% reads in the contents of the file into \variable (undefined if file
+% doesn't exist)
+\newread\readfile@@f
+\def\readfile@@line#1@{%
+@{\catcode`\^^M=10\global\read\readfile@@f to \readfile@@tmp@}%
+\edef\do@{\noexpand\g@@addto@@macro@{\noexpand#1@}@{\readfile@@tmp@}@}\do%
+\ifeof\readfile@@f\else%
+\readfile@@line@{#1@}%
+\fi%
+@}
+\def\readfile#1#2@{%
+\openin\readfile@@f=#1 %
+\ifeof\readfile@@f%
+\typeout@{No TOC file #1 available!@}%
+\else%
+\gdef#2@{@}%
+\readfile@@line@{#2@}%
+\fi
+\closein\readfile@@f%
+@}%
+
+
+\newcommand@{\includescore@}[1]@{
+\def\oly@@fname@{\oly@@basename\@@ifmtarg@{#1@}@{@}@{_#1@}@}
+\let\oly@@addtotoc\undefined
+\readfile@{\oly@@xxxxxxxxx@}@{\oly@@addtotoc@}
+\ifx\oly@@addtotoc\undefined
+\includepdf[pages=-]@{\oly@@fname@}
+\else
+\edef\includeit@{\noexpand\includepdf[pages=-,addtotoc=@{\oly@@addtotoc@}]
+@{\oly@@fname@}@}\includeit
+\fi
+@}
+@end smallexample
+
+
+@node Alternate methods of mixing text and music
+@section Alternative methods of mixing text and music
+
+Other means of mixing text and music (without
+@command{lilypond-book}) are discussed in
+@ref{LilyPond output in other programs}.
+
+
index 1b0d921a01f196eea2a14907819784e40a7cc3b6..7fd0edaedc648d11f8e9aca11368cf0c899101a0 100644 (file)
@@ -340,7 +340,7 @@ komponensre szükség lesz. Kattints a Tovább gombra.
 Megkezdődik a telepítés, amely pár percet igénybe vehet. Ha a Részletek
 mutatása gombra kattintasz, megláthatod, milyen fájlok és hova kerültek
 telepítésre, de erre az információra nem lesz szükséged. Miután a telepítés
-befejeződött, kattints a Befejés gombra.
+befejeződött, kattints a Befejezés gombra.
 
 @item
 Sikeresen telepítetted a LilyPondot!
@@ -354,10 +354,10 @@ Az eltávolításnak két módja van:
 @enumerate
 
 @item
-Kattints a Start menü/LilyPond/Eltávolítás parancsikonra.
+Kattints a Start menü > LilyPond > Eltávolítás parancsikonra.
 
 @item
-A Vezérlőpult/Alkalmazások telepítése és eltávolítása ablakban jelöld ki a
+A Vezérlőpult > Alkalmazások telepítése és eltávolítása ablakban jelöld ki a
 LilyPondot, és kattints az Eltávolítás gombra.
 
 @end enumerate
index 0274d0ba3a614ff94737f94c80727b0b45a4ab24..e63cf9f2c5b5dbb492134c52e21ec44a6f207cde 100644 (file)
@@ -42,7 +42,7 @@ A LilyPond egy @strong{szöveges alapú} kottaszedő program. Ha nem vagy
 tisztában ennek a fogalmával, akkor előbb ezt olvasd el!
 
 @item
-@ifWebLinks{@manualDevelLearningSplitNoName-hu,@rlearningnamed{Top,Tankönyv}}
+@ifWebLinks{@manualStableLearningSplitNoName-hu,@rlearningnamed{Top,Tankönyv}}
 Bevezetés a LilyPond használatába lépésről lépésre.
 @details{Tankönyv}
 
@@ -75,7 +75,7 @@ beviteli módját.
 @details{Kottaírás}
 
 @item
-@ifWebLinks{@manualDevelUsageSplitNoName-hu,@rprogramnamed{Top,Használat}}
+@ifWebLinks{@manualStableUsageSplitNoName-hu,@rprogramnamed{Top,Használat}}
 Bemutatja a alkalmazás parancssori használatát, ügyelve a különböző operációs
 rendszerek közötti különbségekre.
 @details{Használat}
index b77ff39fadf7d21de1ed36406a5e9aa9bd0d7559..289436609ddb88a19ebab1ce54d0eb6215e638ba 100644 (file)
@@ -148,32 +148,9 @@ Core developer, Schemer extraordinaire
 
 @c use commas not colons
 
-Sven Axelsson,
-Pál Benkő,
 Bertrand Bordage,
-Frédéric Bron,
-Peter Chubb,
-Hajo Dezelski,
-Richard Gay,
-Keith OHara,
-Andrew Hawryluk,
-Christian Hitz,
-Marc Hohl,
-Henning Hraban Ramm,
-Ian Hulin,
-Michael Käppler,
-Marek Klein,
-Kieren MacMillan,
-Thomas Morgan,
-Benjamin Peterson,
-Nathan Reed,
-Julien Rioux,
-Boris Shingarov,
-Patrick Schmidt,
-Owen Tuz,
-Jan Warchoł,
-Andrew Wilson,
-Rodolfo Zitellini
+Karin Hoethker,
+Jan Warchoł
 
 @c no comma for last entry
 
@@ -185,11 +162,6 @@ Rodolfo Zitellini
 
 @c use commas not colons
 
-Keith OHara,
-Marc Hohl,
-Alexander Kobel,
-Carsten Steger
-
 @c no comma for last entry
 
 @end macro
@@ -200,13 +172,7 @@ Carsten Steger
 
 @c use commas not colons
 
-Colin Campbell,
-Andrew Hawryluk,
-James Lowe,
-Mike Moral,
-Ralph Palmer,
-David Pounder,
-Patrick Schmidt
+James Lowe
 
 @c no comma for last entry
 
@@ -215,12 +181,9 @@ Patrick Schmidt
 
 @macro bugsquadCurrent
 
-James E. Bailey,
 Colin Campbell,
 Phil Holmes,
-Urs Liska,
-Ralph Palmer,
-Kieren MacMillan,
+Derek Klinge,
 Dmytro O. Redchuk
 
 @c no comma for last entry
@@ -232,7 +195,8 @@ Dmytro O. Redchuk
 
 @c use commas not colons
 
-Christian Hitz
+Colin Campbell,
+Phil Holmes
 
 @c no comma for last entry
 
@@ -244,14 +208,6 @@ Christian Hitz
 
 @c use commas not colons
 
-Federico Bruni,
-Dénes Harmath,
-Jean-Charles Malahieude,
-@c @email{lolyfan@@wanadoo.fr},
-Tineke de Munnik,
-Till Paala,
-Ralf Wildenhues,
-Yoshiki Sawada
 
 @c no comma for last entry
 
@@ -267,51 +223,67 @@ Yoshiki Sawada
 Erlend Aasland,
 Maximilian Albert,
 Guido Amoruso,
+Sven Axelsson,
 Kristof Bastiaensen,
 Pál Benkő,
-@c @email{benkop@@freestart.hu},
+Bertrand Bordage,
+Frédéric Bron,
 Juliusz Chroboczek,
-@c @email{jch@@pps.jussieu.fr},
+Peter Chubb,
 Angelo Contardi,
+Vicente Solsona Della,
+Hajo Dezelski,
+Michael Welsh Duggan,
 David Feuer,
-@c @email{david.feuer@@gmail.com},
 Bertalan Fodor,
+Richard Gay,
 Mathieu Giraud,
+Lisa Opus Goldstein,
 Yuval Harel,
+Andrew Hawryluk,
+Christian Hitz,
+Marc Hohl,
+Ian Hulin,
 Bernard Hurley,
-@c @email{bernard@@fong-hurley.org.uk},
 Yoshinobu Ishizaki,
 Chris Jackson,
-@c @email{chris@@fluffhouse.org.uk},
 David Jedlinsky,
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
+Michael Käppler,
+Marek Klein,
 Michael Krause,
-@c @email{m.krause@@tu-harburg.de},
 Jean-Baptiste Lamy,
-@c @email{jiba@@tuxfamily.org},
 Jonatan Liljedahl,
 Peter Lutek,
+Kieren MacMillan,
 Hendrik Maryns,
+Thomas Morgan,
 Joe Neeman,
-@c @email{joeneeman@@gmail.com},
 Matthias Neeracher,
+Keith OHara,
 Tatsuya Ono,
-Lisa Opus Goldstein,
+Benjamin Peterson,
 Guy Gascoigne-Piggford,
+Henning Hraban Ramm,
+Nathan Reed,
+Julien Rioux,
 Stan Sanderson,
-Edward Sanford Sutton,
 Andreas Scherer,
 Johannes Schindelin,
+Patrick Schmidt,
+Boris Shingarov,
 Kim Shrier,
-Vicente Solsona Della,
+Edward Sanford Sutton,
 David Svoboda,
+Owen Tuz,
 Sebastiano Vigna,
+Jan Warchoł,
 Arno Waschk,
-Michael Welsh Duggan,
 John Williams,
+Andrew Wilson,
 Milan Zamazal,
-Rune Zedeler
+Rune Zedeler,
+Rodolfo Zitellini
 
 @c no comma for last entry
 
@@ -324,11 +296,12 @@ Rune Zedeler
 @c use commas not colons
 
 Tom Cato Amundsen,
-@c @email{tca@@gnu.org},
+Marc Hohl,
 Chris Jackson,
-@c @email{chris@@fluffhouse.org.uk},
+Alexander Kobel,
+Keith OHara,
+Carsten Steger
 Arno Waschk,
-@c @email{arno@@arnowaschk.de},
 Rune Zedeler
 
 @c no comma for last entry
@@ -342,31 +315,34 @@ Rune Zedeler
 @c use commas not colons
 
 Erlend Aasland,
-Trevor Bača,
+Trevor Bača
 Alard de Boer,
+Colin Campbell,
 Jay Hamilton,
-Andrew Hawryluk,
 Joseph Harfouch,
+Andrew Hawryluk,
+Andrew Hawryluk,
 Cameron Horsburgh,
 Geoff Horton,
 Ian Hulin,
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
 Kurtis Kroon,
+James Lowe,
 Dave Luttinen,
 Kieren MacMillan,
 Christian Mondrup,
-@c @email{scancm@@biobase.dk},
+Mike Moral,
 Eyolf Østrem,
 Ralph Palmer,
+Ralph Palmer,
 François Pinard,
-@c @email{pinard@@iro.umontreal.ca},
-@c @uref{http://pinard.progiciels-bpi.ca/},
-Eduardo Vieira,
+David Pounder,
 Michael Rasmussen,
 Till Rettig,
+Patrick Schmidt,
 Carl D. Sorensen,
 Anh Hai Trinh,
+Eduardo Vieira,
 Rune Zedeler
 
 @c no comma for last entry
@@ -376,7 +352,11 @@ Rune Zedeler
 
 @macro bugsquadPrevious
 
-@c nobody here yet
+@c use commas not colons
+James E. Bailey,
+Urs Liska,
+Kieren MacMillan,
+Ralph Palmer
 
 @c no comma for last entry
 @end macro
@@ -386,13 +366,10 @@ Rune Zedeler
 @c use commas not colons
 
 Anthony Fok,
-@c @email{foka@@debian.org},
+Christian Hitz,
 Chris Jackson,
-@c @email{chris@@fluffhouse.org.uk},
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
 David Svoboda
-@c @email{svoboda@@cmu.edu}
 
 @c no comma for last entry
 
@@ -404,44 +381,42 @@ David Svoboda
 
 @c use commas not colons
 
-Frédéric Chiasson,
-Abel Cheung,
 Alard de Boer,
+Federico Bruni,
+Abel Cheung,
+Frédéric Chiasson,
 Simon Dahlbacka,
 Orm Finnendahl,
 David González,
 Nicolas Grandclaude,
-@c @email{ngclaude@@123mail.org},
+Dénes Harmath,
 Damien Heurtebise,
-Matthieu Jacquot,
 Bjoern Jacke,
-@c @email{bjoern.jacke@@gmx.de},
+Matthieu Jacquot,
 Neil Jerram,
-@c @email{nj104@@cus.cam.ac.uk},
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
 Nicolas Klutchnikoff,
 Jean-Charles Malahieude,
-@c @email{lolyfan@@wanadoo.fr},
+Jean-Charles Malahieude,
 Adrian Mariano,
 Christian Mondrup,
 Tineke de Munnik,
-@c @email{tdm@@dds.nl},
+Tineke de Munnik,
 Steven Michael Murphy,
+Till Paala,
 François Pinard,
 Gauvain Pocentek,
-@c @email{gauvainpocentek@@yahoo.fr},
 Till Rettig,
 Ludovic Sardain,
-@c @email{ludovicsardain@@gmail.com},
+Yoshiki Sawada
 Yoshiki Sawada,
 Thomas Scharkowski,
 Clytie Siddall,
 August S. Sigov,
-@c @email{august@@infran.ru},
 Roland Stigge,
 Risto Vääräniemi,
 Andrea Valle,
+Ralf Wildenhues,
 Olcay Yıldırım
 
 @c no comma for last entry
index 34e7c54908b98263428bc816dccf1930a8bf0276..8f9a237608a34cc4ce69cdf9ac747adcc875e55e 100644 (file)
@@ -140,8 +140,8 @@ python@var{version}-dev
 
 @item @uref{http://fontforge.sf.net/, FontForge} (20060125 or
 newer; 20100501 or newer is recommended; must be compiled
-with --enable-double.  Failure to do so can lead to poor intersection
-calculations and poorly-rendered glyphs.)
+with @option{--enable-double}.  Failure to do so can lead to
+poor intersection calculations and poorly-rendered glyphs.)
 
 @item @uref{http://www.gnu.org/software/bison/, GNU Bison}
 
index 22ab4ea4fef0967a3f9507ab70b17b4ed143083e..0bb2cffb02367c3d6cd6ece11aab3a96b358ba7b 100644 (file)
@@ -114,7 +114,7 @@ untweaked music will remain stable for the foreseeable future.
 We will have an extensive discussion period to determine the final
 input specification.
 
-@warning{GLISS will start shortly after 2.14 is released.}
+@warning{GLISS will start shortly after 2.16 is released.}
 
 @subsubheading Grand Organizing Project
 
@@ -131,8 +131,6 @@ features or completely redesigning things.  Rather, it is aimed at
 giving us a much more stable foundation so that we can move ahead
 with larger tasks in the future.
 
-@warning{GOP will start shortly after the 2.14 release.}
-
 @end macro
 
 
index bfb6078223be608687f838a52f0310c760700a75..8506e46951827becb5a250755f324d1a234ecad3 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 @c This file is part of lilypond-learning.tely
 @ignore
-    Translation of GIT committish: 92190ad98deac78cf32837078741296205072119
+    Translation of GIT committish: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -51,11 +51,11 @@ Copyright @copyright{} 1999--2011 by the authors.
 * Concetti fondamentali::             Concetti di base necessari per leggere gli altri manuali.
 * Tweaking output::                Introduzione alla modifica dell'output.
 
-Appendices
+Appendici
 
-* Templates::                      Modelli già pronti.
+* Modelli::                      Modelli già pronti.
 * GNU Free Documentation License:: Licenza di questo documento.
-* LilyPond index::
+* Indice di LilyPond::
 @end menu
 
 @docMain
@@ -72,17 +72,9 @@ Appendices
 @include learning/tutorial.itely
 @include learning/common-notation.itely
 @include learning/fundamental.itely
+@include learning/tweaks.itely
 
-@node Tweaking output
-@chapter Tweaking output
-
-@untranslated
-
-@node Templates
-@appendix Templates
-
-@untranslated
-
+@include learning/templates.itely
 @include fdl.itexi
 
 @node Indice di LilyPond
index 71bd015d222b16ee933d014a7e144b8c33ce7618..6f73613190fe58ba8a6104f869fede304eca0d07 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -33,9 +33,9 @@ Tutorial guidelines:  (different from policy.txt!)
 @chapter Notazione comunemente utilizzata
 @translationof Common notation
 
-Questo capitolo spiega come creare delle bella musica a stampa che
-faccia uso della notazione musicale comunemente utilizzata, seguendo
-il materiale esposto in @ref{Tutorial}.
+Questo capitolo spiega come creare dei belli spartiti che
+facciano uso della notazione musicale comunemente utilizzata, seguendo
+il materiale esposto nel @ref{Tutorial}.
 
 @menu
 * Notazione su un solo pentagramma::
@@ -106,8 +106,9 @@ una buona conoscenza della teoria musicale!}
 @funindex eses
 @funindex isis
 
-Glossario musicale: @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
-@rglos{double flat}, @rglos{accidental}.
+Glossario musicale: @rglosnamed{sharp,diesis}, @rglosnamed{flat,bemolle},
+@rglosnamed{double sharp,doppio diesis},@rglosnamed{double flat,doppio bemolle},
+@rglosnamed{accidental,alterazione o accidente}.
 
 Un @notation{diesis} si ottiene aggiungendo il suffisso @code{is} al nome della nota,
 e un @notation{bemolle} aggiungendo @code{es}.  Come puoi
@@ -115,13 +116,13 @@ immaginare, un @notation{doppio diesis} o un @notation{doppio bemolle}
 si ottengono aggiungendo @code{isis} o @code{eses}.  Questa sintassi
 deriva dalle convenzioni per i nomi delle note presenti nelle lingue
 nordiche e germaniche, come il tedesco e l'olandese.  Per usare altri
-nomi per le @notation{alterazioni}, si veda @ruser{Nomi delle note in altre lingue}.
+nomi per le @notation{alterazioni}, si veda @ruser{Note names in other languages}.
 
 @lilypond[verbatim,quote,relative=2]
 cis4 ees fisis, aeses
 @end lilypond
 
-@cindex chiave, armatura di, impostare
+@cindex armatura di chiave, impostare
 @subheading Armature di chiave
 
 @cindex armatura di chiave
@@ -138,10 +139,10 @@ cis4 ees fisis, aeses
 @funindex \minor
 @funindex minor
 
-Glossario musicale: @rglos{key signature}, @rglos{major},
-@rglos{minor}.
+Glossario musicale: @rglosnamed{key signature,armatura di chiave},
+@rglosnamed{major,maggiore}, @rglosnamed{minor,minore}.
 
-L'@notation{armatura di chiave} viene impostata col comando @code{\key}
+L' @notation{armatura di chiave} viene impostata col comando @code{\key}
 seguito da un'altezza e da @code{\major} o @code{\minor}.
 
 @lilypond[verbatim,quote,relative=2]
@@ -155,23 +156,24 @@ a1 |
 
 @subheading Attenzione: armature di chiave e altezze
 
-Glossario musicale: @rglos{accidental}, @rglos{key signature},
-@rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
-@rglos{transposition}.
+Glossario musicale: @rglosnamed{accidental,alterazione},
+@rglosnamed{key signature,armatura di chiave}, @rglosnamed{pitch,altezza},
+@rglosnamed{flat,bemolle}, @rglosnamed{natural,bequadro}, @rglosnamed{sharp,diesis},
+@rglosnamed{transposition,trasposizione}.
 
-Per determinare se stampare o meno un'@notation{alterazione}, LilyPond
+Per determinare se mostrare o meno un'@notation{alterazione}, LilyPond
 esamina le altezze e l'@notation{armatura di chiave}.  L'armatura di
-chiave influisce soltanto sulle alterazioni che vengono @emph{stampate}, non
+chiave influisce soltanto sulle alterazioni che vengono @emph{mostrate}, non
 sull'@notation{altezza} della nota!  Questa è una caratteristica che spesso
 causa confusione ai nuovi utenti, quindi la spiegheremo più dettagliatamente.
 
-LilyPond fa una netta distinzione tra contenuto musicale e
-layout.  L'alterazione di (@notation{bemolle}, il segno di @notation{bequadro} o il
-@notation{diesis}) di una nota fanno parte dell'altezza, e sono quindi
+LilyPond fa una netta distinzione tra contenuto musicale e aspetto
+grafico.  L'alterazione (@notation{bemolle}, @notation{bequadro} o
+@notation{diesis}) di una nota fa parte dell'altezza ed è quindi
 contenuto musicale.  Se un'alterazione (un  segno @emph{stampato} di bemolle,
 bequadro o diesis) venga posta oppure no di fronte alla nota corrispondente
-è una questione di layout.  Il layout segue delle regole, dunque
-le alterazioni sono stampate automaticamente in base a queste
+è una questione di aspetto grafico.  La formattazione segue delle regole, dunque
+le alterazioni sono inserite automaticamente in base a queste
 regole.  Le altezze nella tua musica sono opere d'arte, quindi non
 verranno aggiunte in automatico: sei tu a dover inserire la nota che
 vuoi sentire.
@@ -207,7 +209,7 @@ di lavoro in fase di scrittura, ma il vantaggio è che la
 @notation{trasposizione} è più semplice, e le alterazioni possono essere
 prodotte usando diverse convenzioni.  Per alcuni esempi che mostrano come
 sia possibile produrre delle alterazioni in base a regole diverse, si veda
-@ruser{Alterazioni automatiche}.
+@ruser{Automatic accidentals}.
 
 
 @seealso
@@ -235,7 +237,7 @@ Guida alla notazione:
 @subheading Legature di valore
 
 
-Glossario musicale: @rglos{tie}.
+Glossario musicale: @rglosnamed{tie,legatura di valore}.
 
 Una @notation{legatura di valore} si ottiene apponendo una tilde @code{~} alla
 prima nota della legatura.
@@ -247,7 +249,7 @@ g4~ g c2~ | c4~ c8 a~ a2 |
 @subheading Legature di portamento
 
 
-Glossario musicale: @rglos{slur}.
+Glossario musicale: @rglosnamed{slur,legatura di portamento}.
 
 Una @notation{legatura di portamento} è una linea curva che collega più note.  La
 nota iniziale e quella finale sono indicate rispettivamente con
@@ -257,9 +259,10 @@ nota iniziale e quella finale sono indicate rispettivamente con
 d4( c16) cis( d e c cis d) e( d4)
 @end lilypond
 
-@subheading Legature di fraseggio
+@subheading Legature di frase
 
-Glossario musicale: @rglos{slur}, @rglos{phrasing}.
+Glossario musicale: @rglosnamed{slur,legatura di portamento},
+@rglosnamed{phrasing,legatura di frase}.
 
 Le legature di portamento che indicano una @notation{frase} più lunga
 possono essere inserite con @code{\(} e @code{\)}.  E' possibile avere allo
@@ -276,7 +279,8 @@ a8(\( ais b c) cis2 b'2 a4 cis,\)
 @cindex legature di portamento vs. legature di valore
 @subheading Attenzione: legature di portamento vs. legature di valore
 
-Glossario musicale: @rglos{articulation}, @rglos{slur}, @rglos{tie}.
+Glossario musicale: @rglosnamed{articulation,articolazione},
+@rglosnamed{slur,legatura di portamento}, @rglosnamed{tie,legatura di valore}.
 
 Una @notation{legatura di portamento} ha lo stesso aspetto di una
 @notation{legatura di valore}, ma un significato diverso.  Una legatura
@@ -308,7 +312,7 @@ Guida alla notazione:
 @cindex accento
 @cindex staccato
 
-Glossario musicale: @rglos{articulation}.
+Glossario musicale: @rglosnamed{articulation,articolazione}.
 
 Le @notation{articolazioni} di uso comune possono essere aggiunte a una nota
 con una lineetta @code{-} e un singolo carattere:
@@ -325,7 +329,7 @@ c4-> c-. c2-_
 @funindex ^
 @funindex _
 
-Glossario musicale: @rglos{fingering}.
+Glossario musicale: @rglosnamed{fingering,diteggiatura}.
 
 Analogalmente, le indicazioni di @notation{diteggiatura} possono essere
 aggiunte a una nota con una lineetta (@code{-}) e il numero che si
@@ -364,7 +368,7 @@ c4_-^1 d^. f^4_2-> e^-_+
 @funindex \!
 @funindex !
 
-Glossario musicale: @rglos{dynamics}, @rglos{crescendo},
+Glossario musicale: @rglosnamed{dynamics,dinamica}, @rglos{crescendo},
 @rglos{decrescendo}.
 
 I segni di @notation{dinamica} si ottengono aggiungendo alla nota
@@ -443,7 +447,7 @@ Guida alla notazione:
 @funindex \autoBeamOn
 @funindex autoBeamOn
 
-Glossario musicale: @rglos{beam}.
+Glossario musicale: @rglosnamed{beam,travatura}.
 
 Tutte le @notation{travature} vengono disegnate automaticamente:
 
@@ -452,8 +456,8 @@ a8 ais d ees r d c16 b a8
 @end lilypond
 
 Se non ti piace il modo in cui vengono prodotte automaticamente le travature, è
-possibile sovrascriverle manualmente.  Per correggere soltanto una singola travatura, indica
-la prima nota da raggruppare con @code{[} e l'ultima con @code{]}.
+possibile sovrascriverle manualmente.  Per correggere soltanto una singola
+travatura, indica la prima nota da raggruppare con @code{[} e l'ultima con @code{]}.
 
 @lilypond[verbatim,quote,relative=2]
 a8[ ais] d[ ees r d] c16 b a8
@@ -492,7 +496,7 @@ Guida alla notazione:
 
 Glossario musicale: @rglos{anacrusis}.
 
-Un' @notation{anacrusi}) può essere inserita con la parola chiave
+Un' @notation{anacrusi} può essere inserita con la parola chiave
 @code{\partial}.  Questa è seguita da una durata: @code{\partial 4}
 è un'anacrusi di semiminima e @code{\partial 8} di croma.
 
@@ -509,7 +513,8 @@ c2 d |
 @funindex \times
 @funindex times
 
-Glossario musicale: @rglos{note value}, @rglos{triplet}.
+Glossario musicale: @rglosnamed{note value,durata},
+@rglosnamed{triplet,gruppo irregolare}.
 
 I @notation{gruppi irregolari} vengono preceduti dalla parola chiave
 @code{\times}.  Questa richiede due argomenti: una frazione e un frammento
@@ -537,7 +542,7 @@ una @notation{terzina} ha 2/3 come frazione:
 @funindex \appoggiatura
 @funindex acciaccatura
 
-Glossario musicale: @rglos{grace notes}, @rglos{acciaccatura},
+Glossario musicale: @rglosnamed{grace notes,abbellimenti}, @rglos{acciaccatura},
 @rglos{appoggiatura}.
 
 Gli @notation{abbellimenti} sono creati col comando @code{\grace},
@@ -572,7 +577,7 @@ più di una voce sullo stesso pentagramma.
 
 @menu
 * Espressioni musicali::
-* Pentagrammi multipli::
+* Righi multipli::
 * Gruppi di pentagrammi::
 * Combinare le note negli accordi::
 * Polifonia su un singolo rigo::
@@ -584,9 +589,7 @@ più di una voce sullo stesso pentagramma.
 @translationof Music expressions explained
 
 @cindex espressione musicale
-@cindex espressione, musicale
 @cindex espressione musicale composta
-@cindex espressione musicale, composta
 
 Nei file di input di LilyPond, la musica è rappresentata dalle
 @emph{espressioni musicali}.  Anche una singola nota è un'espressione
@@ -655,7 +658,7 @@ musica complessa come le partiture polifoniche.
 @funindex >>
 @funindex << ... >>
 
-Glossario musicale: @rglos{polyphony}.
+Glossario musicale: @rglosnamed{polyphony,polifonia}.
 
 Questa tecnica è utile per la musica @notation{polifonica}.  Per inserire
 della musica che abbia più voci o più linee di pentagramma, basta combinare
@@ -791,9 +794,9 @@ frequenti delle partiture poliritmiche.
 @funindex ChoirStaff
 
 Glossario musicale:
-@rglos{brace},
-@rglos{staff},
-@rglos{system}.
+@rglosnamed{brace,graffa},
+@rglosnamed{staff,pentagramma o rigo},
+@rglosnamed{system,sistema}.
 
 La musica per pianoforte viene stampata su due righi musicali collegati
 con una @notation{graffa}.
@@ -837,7 +840,7 @@ Guida alla notazione:
 @subsection Combinare le note negli accordi
 @translationof Combining notes into chords
 
-Glossario musicale: @rglos{chord}.
+Glossario musicale: @rglosnamed{chord,accordo}.
 
 @cindex accordi
 @cindex durate delle note negli accordi
@@ -925,7 +928,7 @@ Questa sezione presenta la musica vocale e gli spartiti di semplici canzoni.
 @funindex \addlyrics
 @funindex addlyrics
 
-Glossario musicale: @rglos{lyrics}.
+Glossario musicale: @rglosnamed{lyrics,testo}.
 
 Questo è l'inizio della melodia di una
 filastrocca, @notation{Girls and boys come out to play}:
@@ -955,8 +958,8 @@ separando ogni sillaba con uno spazio.
 >>
 @end lilypond
 
-@warning{È fondamentale che l'ultima sillaba sia dalla parentesi graffa che
-chiude con uno spazio o una nuova linea, altrimenti si presumerà
+@warning{È fondamentale che l'ultima sillaba sia separata dalla parentesi
+graffa di chiusura con uno spazio o una nuova linea, altrimenti si presumerà
 che sia parte della sillaba, e questo causerà un errore poco
 chiaro, vedi @rprogram{Apparent error in ../ly/init.ly}.}
 
@@ -977,7 +980,7 @@ in simultanea.
 @cindex testo, parole polisillabiche
 @cindex parole con sillabe multiple nel testo
 
-Glossario musicale: @rglos{melisma}, @rglos{extender line}.
+Glossario musicale: @rglos{melisma}, @rglosnamed{extender line,linea di estensione}.
 
 La prossima riga della filastrocca è @notation{The moon doth
 shine as bright as day}.  Aggiungiamola:
index 6003126b3bc8a10c7eb873379ee4f9a79ce47091..9f1e17502cc6a1e250bc13ea0733b5bf43227d87 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 
 @ignore
-    Translation of GIT committish: 92d7753b7a1e9887afcc6ad6864a78940e7878fb
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -14,8 +14,8 @@
 @chapter Concetti fondamentali
 @translationof Fundamental concepts
 
-Nel Tutorial abbiamo visto come produrre della bella musica a stampa
-da un semplice file di testo.  Questa sezione presenta i concetti e le
+Nel Tutorial abbiamo visto come produrre dei belli spartiti da un
+semplice file di testo.  Questa sezione presenta i concetti e le
 tecniche richiesti per produrre partiture ugualmente belle, ma
 più complesse.
 
@@ -60,7 +60,7 @@ Un esempio basilare di un file di input di LilyPond è
 \header @{ @}
 
 \score @{
-  @var{...compound music expression...}  % all the music goes here!
+  @var{...espressione musicale composta...}  % tutta la musica va qui!
   \layout @{ @}
   \midi @{ @}
 @}
@@ -138,7 +138,7 @@ singola nota a una grande espressione composta come
 @example
 @{
   \new StaffGroup <<
-    @var{...insert the whole score of a Wagner opera in here...}
+    @var{...inserisci qui l'intera opera di Wagner...}
   >>
 @}
 @end example
@@ -288,23 +288,6 @@ non abbiamo bisogno di @code{StaffGroup}, che non fa altro che raggruppare un in
 di righi con una parentesi graffa a sinistra, ma abbiamo comunque bisogno dei
 righi per il canto e per il pianoforte.
 
-@example
-\score @{
-  @{ % questa parentesi inizia la principale espressione musicale composta
-    \new StaffGroup <<
-      @var{...inserisci qui la partitura completa di un'opera di Wagner...}
-    >>
-  @} % questa parentesi chiude la principale espressione musicale composta
-  \layout @{ @}
-@}
-@end example
-
-Un'intera opera di Wagner sarebbe probabilmente il doppio di questo
-manuale, quindi aggiungeremo solo un pianoforte e un cantante.  Per questo
-ensemble non abbiamo bisongo di @code{StaffGroup}, che non fa altro che
-raggruppare un certo numero di righi con una parentesi a sinistra, dunque lo
-toglieremo.  Tuttavia @emph{abbiamo} bisogno di un pianoforte e di una voce.
-
 @example
 \score @{
   <<
@@ -515,7 +498,7 @@ diversi tipi di parentesi e di costrutti in parentesi.
 @item @code{\( .. \)}
   @tab Contrassegna l'inizio e la fine di una legatura di frase
 @item @code{[ .. ]}
-  @tab Contrassegna l'inizio e la fine di una cediglia impostata manualmente
+  @tab Contrassegna l'inizio e la fine di una travatura impostata manualmente
 @end multitable
 
 A questi dovremmo aggiungere altri costrutti che generano linee tra
@@ -535,30 +518,28 @@ correttamente con alcuna delle parentesi o dei costrutti in parentesi.  Infatti
 queste non sono parentesi nel senso che racchiudono qualcosa -- sono semplicemente
 dei contrassegni che indicano dove qualcosa inizia e finisce.
 
-Quindi, ad esempio, una legatura di frase può iniziare prima di una cediglia
-inserita manualmente e finire prima della fine della cediglia -- non
+Quindi, ad esempio, una legatura di frase può iniziare prima di una travatura
+inserita manualmente e finire prima della fine della travatura -- non
 molto musicale, forse, ma possibile:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
- { g8\( a b[ c b\) a] g4 }
+@lilypond[quote,verbatim,ragged-right,relative=2]
+g8\( a b[ c b\) a] g4
 @end lilypond
 
 In generale, tipi diversi di parentesi, costrutti in parentesi e segni che
 riguardano gruppi irregolari, legature e abbellimenti possono essere combinati
-liberamente. L'esempio seguente mostra una cediglia che si estende su un
+liberamente. L'esempio seguente mostra una travatura che si estende su un
 gruppo irregolare (linea 1), una legatura di portamento che si estende su
-una terzina (linea 2), una cediglia e una legatura di portamento che si
+una terzina (linea 2), una travatura e una legatura di portamento che si
 estendono su una terzina, una legatura di valore che attraversa due gruppi
 irregolari, e una legatura di frase che si estende fuori da un gruppo
 irregolare (linee 3 e 4).
 
-@lilypond[quote,verbatim,fragment,ragged-right]
-{
-  r16[ g \times 2/3 { r16 e'8] }
-  g16( a \times 2/3 { b16 d) e' }
-  g8[( a \times 2/3 { b8 d') e'~] } |
-  \times 4/5 { e'32\( a b d' e' } a'4.\)
-}
+@lilypond[quote,verbatim,ragged-right,relative=1]
+r16[ g \times 2/3 { r16 e'8] }
+g,16( a \times 2/3 { b16 d) e }
+g,8[( a \times 2/3 { b8 d) e~] } |
+\times 4/5 { e32\( a, b d e } a4.\)
 @end lilypond
 
 
@@ -645,7 +626,7 @@ con brevi e occasionali sezioni polifoniche.
 Ecco come suddividere gli accordi precedenti in due voci e aggiungere sia
 la nota di passaggio che la legatura di portamento:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
 \key g \major
 %    Voice "1"               Voice "2"
 << { g4 fis8( g) a4 g } \\ { d4 d d d }  >>
@@ -655,7 +636,7 @@ Si noti come i gambi della seconda voce adesso siano rivolti in basso.
 
 Ecco un altro semplice esempio:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
 \key d \minor
 %    Voice "1"             Voice "2"
 << { r4 g g4. a8 }    \\ { d,2 d4 g }       >> |
@@ -668,7 +649,7 @@ battuta.  Per musiche che hanno poche note in ogni battuta questo layout
 può aiutare la leggibilità del codice, ma se ci sono molte note in
 ogni battuta è preferibile dividere ogni voce, così:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
 \key d \minor
 << {
   % Voice "1"
@@ -695,7 +676,7 @@ I contesti della voce hanno i nomi @code{"1"}, @code{"2"}, etc.
 In ogni contesto, la direzione verticale di legature di portamento,
 gambi, legature di valore, dinamica, etc., è impostata correttamente.
 
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
 \new Staff \relative c' {
   % Main voice
   c16 d e f
@@ -757,7 +738,7 @@ voce con i triangoli blu.
 
 I comandi @code{\voiceXXXStyle} sono pensati soprattutto
 per documenti didattici come questo.  Modificano il colore
-della testa, del gambo e delle cediglie, e lo stile della
+della testa, del gambo e delle travature, e lo stile della
 testa, così da rendere le voci facilmente distinguibili.
 La voce uno è impostata su rombi rossi, la voce due su triangoli blu,
 la voce tre su cerchi barrati verdi, e la voce quattro (non impiegata
@@ -883,7 +864,7 @@ vedremo, questo pone alcune difficoltà.  Come abbiamo imparato,
 iniziamo usando il costrutto @code{<< \\  >>} per inserire la musica
 della prima battuta in tre voci:
 
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
 \new Staff \relative c'' {
   \key aes \major
   <<
@@ -905,7 +886,7 @@ giù.  Possiamo correggere semplicemente omettendo la voce tre e ponendo la
 musica nella voce quattro.  Si può fare aggiungendo semplicemente un altro
 paio di @code {\\}:
 
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
 \new Staff \relative c'' {
   \key aes \major
   << % Voice one
@@ -1206,7 +1187,7 @@ un contesto @code{Lyrics} usando @code{\new Lyrics} e collegando
 esplicitamente il testo alle note con @code{\lyricsto@{@}}, tramite
 il nome assegnato alla voce.
 
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
 <<
   \new Voice = "one" {
     \relative c'' {
@@ -1380,7 +1361,7 @@ compaiono esplicitamente nel file di input devono essere aggiunti
 nell'output.  Ad esempio, si confrontino l'input e l'output del
 seguente esempio:
 
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
 cis4 cis2. | a4 a2. |
 @end lilypond
 
@@ -1579,7 +1560,7 @@ Guida alla notazione: @ruser{Creating contexts}.
 Ogni segno presente nell'output di una partitura realizzata con LilyPond
 è prodotto da un @code{Engraver} (incisore).  Dunque c'è un incisore per
 creare i righi, uno per le teste delle note, uno per i gambi, uno per le
-cediglie, etc, etc.  In totale ci sono più di 120 incisori!
+travature, etc, etc.  In totale ci sono più di 120 incisori!
 Fortunatamente, per gran parte delle partiture è necessario conoscerne
 pochi soltanto, e per partiture semplici non occorre conoscerne
 alcuno.
@@ -1620,7 +1601,7 @@ partire dal nome, o viceversa.
 @item Accidental_engraver
   @tab Crea le alterazioni, le alterazioni di precauzione e di cortesia
 @item Beam_engraver
-  @tab Incide le cediglie
+  @tab Incide le travature
 @item Clef_engraver
   @tab Incide le chiavi
 @item Completion_heads_engraver
@@ -1832,7 +1813,7 @@ Proviamo a cambiare varie volte la dimensione del font, che influisce (tra
 le altre cose) sulla dimensione delle teste delle note.  La modifica è relativa
 al valore predefinito, non all'ultimo valore impostato.
 
-@lilypond[quote,verbatim,ragged-right,relative=1,fragment]
+@lilypond[quote,verbatim,ragged-right,relative=1]
 c4 d
 % make note heads smaller
 \set fontSize = #-4
@@ -2106,11 +2087,16 @@ I valori delle proprietà di un contesto possono essere impostati anche
 per tutti i contesti di un particolare tipo includendo il comando
 @code{\set} in un blocco @code{\context} nello stesso modo.
 
-
 @seealso
 Guida alla notazione: @ruser{Modifying context plug-ins},
 @ruser{Changing context default settings}.
 
+@knownissues
+Gli incisori @code{Stem_engraver} e @code{Beam_engraver} fissano i propri
+oggetti alle teste delle note.  Se si elimina @code{Note_heads_engraver}
+le teste delle note non vengono prodotte e di conseguenza non vengono creati
+nemmeno i gambi né le travature.
+
 
 @node Estendere i modelli
 @section Estendere i modelli
@@ -2126,7 +2112,7 @@ Ma se ti serve qualcosa che non è presente lì?  Continua a leggere.
 * Soprano e violoncello::
 * Partitura vocale a quattro parti SATB::
 * Scrivere una partitura da zero::
-* Ridurre le dimensioni del file grazie a variabili e funzioni::
+* Ridurre l'input grazie a variabili e funzioni::
 * Partiture e parti::
 @end menu
 
@@ -2846,10 +2832,10 @@ verrà fornita una spiegazione approfondita.  I curiosi possono dare
 un'occhiata a @ruser{Overview of modifying properties}.
 In questo caso, vogliamo modificare soltanto la sottoproprietà
 @code{allungabilità}.  Di nuovo, chi è curioso può trovare i valori predefiniti
-per la proprietà staff-staff-spacing nel file @file{scm/@/define-grobs@/.scm}
+per la proprietà staff-staff-spacing nel file @file{scm/define-grobs.scm}
 guardando la definizione del grob @code{VerticalAxisGroup}.  Il valore dell'
 @code{allungabilità} viene preso dalla definizione del contesto @code{PianoStaff}
-(nel file @file{ly/@/engraver-init@/.ly}) così che i valori siano identici.
+(nel file @file{ly/engraver-init.ly}) così che i valori siano identici.
 
 @example
 \score @{
@@ -2956,7 +2942,7 @@ PedalOrganMusic = \relative c {
 
 @seealso
 Glossario musicale:
-@rglos{system}.
+@rglosnamed{system,sistema}.
 
 @node Ridurre l'input grazie a variabili e funzioni
 @subsection Ridurre l'input grazie a variabili e funzioni
@@ -3074,11 +3060,11 @@ padText =
 
 L'uso di variabili è anche un buon modo per ridurre il lavoro quando
 la sintassi di input di LilyPond cambia (vedi
-@rprogram{Updating files with convert-ly}).  Se si ha un'unica
+@rprogram{Aggiornare i file con convert-ly}).  Se si ha un'unica
 definizione (come @code{\dolce}) per tutti i file di input
 (vedi @ref{Style sheets}), allora se la sintassi cambia bisogna
 aggiornare soltanto la singola definizione @code{\dolce},
-invece di dover modificare tutti i file @code{.ly}.
+invece di dover modificare tutti i file @file{.ly}.
 
 
 @node Partiture e parti
index 3cb2e4956a977f3095a5172509861acd5890f6e6..7694b3597d3906e9b26db962f2b4c12f5915a69c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -19,10 +19,10 @@ Deve essere stato durante una prova della EJE (Orchestra Giovanile di
 Eindhoven), da qualche parte nel 1995 che Jan, uno degli strampalati
 violisti, ha parlato ad Han-Wen, uno degli alterati cornisti, del
 nuovo grande progetto a cui stava lavorando. Era un sistema automatico
-per stampare musica (per la precisione, si trattava di MPP, un
-preprocessore per MusiXTeX). Accadde che per caso Han-Wen desiderava
-stampare alcune parti di una partitura, così iniziò a sperimentare il
-software, e ne rimase presto affascinato. Si decise che MPP era
+per creare spartiti (per la precisione, si trattava di MPP, un
+preprocessore per MusiXTeX). Accadde che per caso Han-Wen desiderasse
+scrivere delle parti di una partitura, così iniziò a sperimentare il
+software e ne rimase presto affascinato. Si decise che MPP era
 un vicolo cieco. Dopo molte discussioni e animati scambi di email,
 Han-Wen diede inizio a LilyPond nel 1996. Questa volta è stato Jan ad
 essere coinvolto nel progetto di Han-Wen.
@@ -51,7 +51,7 @@ suggerimenti e segnalazioni di bug, quindi vorremmo ringraziare tutti
 gli utenti che ci hanno segnalato bug, dato consigli o contribuito
 in qualunque altro modo a LilyPond.
 
-Suonare e stampare la musica sono più di una bella analogia.
+Suonare e creare spartiti sono più di una bella analogia.
 Programmare insieme è molto divertente, e aiutare le persone è
 profondamente appagante, ma alla fine lavorare a LilyPond è un modo
 per esprimere il nostro grande amore per la musica. Che possa aiutarvi
diff --git a/Documentation/it/learning/templates.itely b/Documentation/it/learning/templates.itely
new file mode 100644 (file)
index 0000000..dc1bf82
--- /dev/null
@@ -0,0 +1,241 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+
+@ignore
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.14.0"
+
+@node Modelli
+@appendix Modelli
+@translationof Templates
+
+Questa sezione del manuale contiene dei modelli con la struttura del file
+LilyPond già preimpostata.  Non ti resta che aggiungere le note, eseguire
+LilyPond e goderti dei belli spartiti!
+
+@c bad node name for ancient notation to avoid conflict
+@menu
+* Rigo singolo::
+* Modelli per pianoforte::
+* Quartetto d'archi::
+* Gruppi vocali::
+* Modelli per orchestra::
+* Modelli per la notazione antica::
+* Altri modelli::
+@end menu
+
+
+@node Rigo singolo
+@appendixsec Rigo singolo
+@translationof Single staff
+
+@appendixsubsec Solo note
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+{single-staff-template-with-only-notes.ly}
+
+
+@appendixsubsec Note e testo
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+{single-staff-template-with-notes-and-lyrics.ly}
+
+@appendixsubsec Note e accordi
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{single-staff-template-with-notes-and-chords.ly}
+
+@appendixsubsec Note, testo e accordi.
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{single-staff-template-with-notes,-lyrics,-and-chords.ly}
+
+
+@node Modelli per pianoforte
+@appendixsec Modelli per pianoforte
+@translationof Piano templates
+
+@appendixsubsec Solo pianoforte
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-simple.ly}
+
+@appendixsubsec Pianoforte e melodia con testo
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-with-melody-and-lyrics.ly}
+
+@appendixsubsec Pianoforte con testo al centro
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-with-centered-lyrics.ly}
+
+@appendixsubsec Pianoforte con dinamiche al centro
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-with-centered-dynamics.ly}
+
+
+@node Quartetto d'archi
+@appendixsec Quartetto d'archi
+@translationof String quartet
+
+@appendixsubsec Quartetto d'archi
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{string-quartet-template-simple.ly}
+
+@appendixsubsec Parti di un quartetto d'archi
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{string-quartet-template-with-separate-parts.ly}
+
+
+@node Gruppi vocali
+@appendixsec Gruppi vocali
+@translationof Vocal ensembles
+
+@appendixsubsec Partitura vocale SATB
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template.ly}
+
+@appendixsubsec Partitura vocale SATB e automatica riduzione per pianoforte
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template-with-automatic-piano-reduction.ly}
+
+@appendixsubsec SATB con contesti allineati
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
+
+@appendixsubsec SATB su quattro righi
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{satb-choir-template---four-staves.ly}
+
+@appendixsubsec Strofa sola e ritornello a due parti
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template-with-verse-and-refrain.ly}
+
+@appendixsubsec Inni
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{hymn-template.ly}
+
+@appendixsubsec Salmi
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{anglican-psalm-template.ly}
+
+
+@node Modelli per orchestra
+@appendixsec Modelli per orchestra
+@translationof Orchestral templates
+
+@appendixsubsec Orchestra, coro e pianoforte
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{orchestra,-choir-and-piano-template.ly}
+
+
+@c bad node name to avoid node name conflict
+@node Modelli per notazione antica
+@appendixsec Modelli per notazione antica
+@translationof Ancient notation templates
+
+@appendixsubsec Transcrizione di musica mensurale
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{ancient-notation-template----modern-transcription-of-mensural-music.ly}
+
+@appendixsubsec Trascrizione di musica Gregoriana
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{ancient-notation-template----modern-transcription-of-gregorian-music.ly}
+
+
+@node Altri modelli
+@appendixsec Altri modelli
+@translationof Other templates
+
+@appendixsubsec Combo jazz
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{jazz-combo-template.ly}
+
+
+
+
+@ignore
+This isn't very useful, and only duplicates material in
+"global issues".  And if this info changes, this section often
+gets forgotten.
+
+@no de Other templates
+@se ction Other templates
+@su bsection All headers
+
+This template displays all available headers.  Some of them are only
+used in the Mutopia project; they don't affect the printed output at
+all.  They are used if you want the piece to be listed with different
+information in the Mutopia database than you wish to have printed on the
+music.  For example, Mutopia lists the composer of the famous D major
+violin concerto as TchaikovskyPI, whereas perhaps you wish to print
+"Petr Tchaikowski" on your music.
+
+@ The `line-width' is for \header.
+@li lypond[quote,verbatim,ragged-right,line-width]
+\version "2.14.0"
+\header {
+  dedication = "dedication"
+  title = "Title"
+  subtitle = "Subtitle"
+  subsubtitle = "Subsubtitle"
+  composer = "Composer (xxxx-yyyy)"
+  opus = "Opus 0"
+  piece = "Piece I"
+  meter = "meter"
+  instrument = "Instrument"
+  arranger = "Arranger"
+  poet = "Poet"
+  texttranslator = "Translator"
+  copyright = "public domain"
+
+  % These are headers used by the Mutopia Project
+  % http://www.mutopiaproject.org/
+  mutopiatitle = ""
+  mutopiacomposer = ""
+  mutopiapoet = ""
+  mutopiainstrument = ""
+  date = "composer's dates"
+  source = "urtext "
+  maintainer = "your name here"
+  maintainerEmail = "your email here"
+  maintainerWeb = "your home page"
+  lastupdated = "2004/Aug/26"
+}
+
+\score {
+  { c'4 }
+  \header {
+    piece = "piece1"
+    opus = "opus1"
+  }
+}
+
+\score {
+  { c'4 }
+  \header {
+    piece = "piece2"
+    opus = "opus2"
+  }
+}
+@end lilypond
+@end ignore
index 29884dfa98adb9c7b8a396f6436bcd793f66064e..a2dc7712b6772c45d2be1976b01b2e56387b640a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 
 @ignore
-    Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -98,19 +98,19 @@ programmi che usi.
 
 @item
 @ref{MacOS X, @sourceimage{logo-macosx,,,}}
-@ref{MacOS X, MacOS X} (graphical)
+@ref{MacOS X, MacOS X} (grafico)
 
 @item
 @ref{Windows, @sourceimage{logo-windows,,,}}
-@ref{Windows, Microsoft Windows} (graphical)
+@ref{Windows, Microsoft Windows} (grafico)
 
 @item
-@ref{Command-line, @sourceimage{logo-linux,,,}
+@ref{Linea di comando, @sourceimage{logo-linux,,,}
 @sourceimage{logo-freebsd,,,}
 @sourceimage{logo-macosx,,,}
 @sourceimage{logo-windows,,,}
 }
-@ref{Command-line, All operating systems} (command-line)
+@ref{Linea di comando, Tutti i sistemi operativi} (linea di comando)
 
 @end itemize
 
@@ -198,9 +198,9 @@ casi questi valori sono utili.
 @funindex '
 @funindex ,
 
-Glossario musicale: @rglos{pitch}, @rglos{interval},
-@rglos{scale}, @rglos{middle C}, @rglos{octave},
-@rglos{accidental}.
+Glossario musicale: @rglosnamed{pitch,altezza}, @rglosnamed{interval,intervallo},
+@rglosnamed{scale,scala}, @rglosnamed{middle C,Do centrale}, @rglosnamed{octave,ottava},
+@rglosnamed{accidental,alterazione}.
 
 Il modo più semplice per inserire le note è usare il modo @code{\relative}
 (relativo). In questo modo, l'ottava viene scelta automaticamente in
@@ -303,9 +303,9 @@ apici semplici @code{''} e non quelle a doppi apici @code{"}@tie{}!
 @cindex nota puntata
 @cindex notazione delle durate
 
-Glossario musicale: @rglos{beam}, @rglos{duration},
-@rglos{whole note}, @rglos{half note}, @rglos{quarter note},
-@rglos{dotted note}.
+Glossario musicale: @rglosnamed{beam,coda}, @rglosnamed{duration,durata},
+@rglosnamed{whole note,semibreve}, @rglosnamed{half note,minima}, @rglosnamed{quarter note,semiminima},
+@rglosnamed{dotted note,nota puntata}.
 
 La @notation{durata} di una nota viene indicata da un numero che segue
 il nome della nota:  @code{1} per una @notation{semibreve}, @code{2} per
@@ -341,7 +341,7 @@ esplicitamente (cioè con un numero).
 @cindex pausa
 @cindex notazione delle pause
 
-Glossario musicale: @rglos{rest}.
+Glossario musicale: @rglosnamed{rest,pausa}.
 
 Una @notation{pausa} viene inserita proprio come una nota ma col nome
 @code{r}@tie{}:
@@ -361,7 +361,7 @@ Una @notation{pausa} viene inserita proprio come una nota ma col nome
 @funindex \time
 @funindex time
 
-Glossario musicale: @rglos{time signature}.
+Glossario musicale: @rglosnamed{time signature,indicazione di tempo}.
 
 Il @notation{tempo} si imposta con il comando @code{\time}:
 
@@ -376,15 +376,16 @@ Il @notation{tempo} si imposta con il comando @code{\time}:
 }
 @end lilypond
 
-@subheading Tempo marks
+@subheading Indicazioni di tempo
 
-@cindex tempo marks
-@cindex metronome marks
+@cindex indicazioni di tempo
+@cindex indicazioni metronomiche
 
 @funindex \tempo
 @funindex tempo
 
-Glossario musicale: @rglos{tempo indication}, @rglos{metronome}.
+Glossario musicale: @rglosnamed{tempo indication,indicazione di tempo},
+@rglosnamed{metronome,metronomo}.
 
 L' @notation{indicazione di tempo} e l' @notation{indicazione metronomica} si
 impostano col comando @code{\tempo}:
@@ -415,7 +416,7 @@ impostano col comando @code{\tempo}:
 @funindex \clef
 @funindex clef
 
-Glossario musicale: @rglos{clef}.
+Glossario musicale: @rglosnamed{clef,chiave}.
 
 La @notation{chiave} si imposta con il comando @code{\clef}:
 
@@ -492,7 +493,7 @@ cosa significano tutti questi termini:
 
 @item
 @strong{Dichiarazione di versione}:
-Ogni file LilyPond dovrebbe contenere una dichiarazione di versione.  Una
+Ogni file LilyPond deve contenere una dichiarazione di versione.  Una
 dichiarazione di versione è una linea che indica la versione di LilyPond per la
 quale il file è stato scritto, come nel seguente esempio:
 
@@ -508,7 +509,7 @@ permette l'aggiornamento automatico del file di input file via via che la
 sintassi di LilyPond cambia.  Secondo, indica la versione di LilyPond richiesta
 per compilare il file.
 
-Se la dichiarazione di versione è omessa dal file di input, LilyPond stampa
+Se la dichiarazione di versione è omessa dal file di input, LilyPond mostra
 un avvertimento durante la compilazione del file.
 
 @item
@@ -572,7 +573,7 @@ posto @emph{sopra} il codice a cui si riferisce.
 
 @example
 a4 a a a
-% this comment refers to the Bs
+% questo commento si riferisce ai Si
 b2 b
 @end example
 
@@ -584,12 +585,12 @@ ci provi, il primo @code{%@}} interromperà @emph{entrambi} i commenti di
 blocco.  Il seguente frammento mostra gli usi possibili per i commenti:
 
 @example
-% notes for twinkle twinkle follow
+% ecco le note di "Ah! Vous dirai-je, Maman"
   c4 c g' g a a g2
 
 %@{
-  This line, and the notes below are ignored,
-  since they are in a block comment.
+  Questa linea e le note sotto vengono ignorate,
+  perché si trovano in un commento di blocco.
 
   f4 f e e d d c2
 %@}
@@ -602,9 +603,9 @@ blocco.  Il seguente frammento mostra gli usi possibili per i commenti:
 @section Gestire gli errori
 @translationof Dealing with errors
 
-@cindex troubleshooting
+@cindex risoluzione dei problemi
 
-Talvolta LilyPond non genera l'output che vorresti.  Questa
+Talvolta LilyPond non genera l'output che desideri.  Questa
 sezione fornisce alcuni link che possono aiutarti a risolvere i
 problemi che potrai incontrare.
 
@@ -622,7 +623,7 @@ La risoluzione dei problemi in LilyPond può essere un compito impegnativo
 per le persone che sono abituate a un'interfaccia grafica, perché è possibile
 creare dei file di input non validi.  Quando questo accade, un approccio logico
 è il modo migliore per identificare e risolvere il problema.  Alcune linee guida
-che ti aiutano a imparare questo sono indicate in @rprogram{Troubleshooting}.
+che ti aiutano a imparare questo sono indicate in @rprogram{Risoluzione dei problemi}.
 
 
 @node Alcuni errori comuni
@@ -633,15 +634,15 @@ che ti aiutano a imparare questo sono indicate in @rprogram{Troubleshooting}.
 
 Ci sono alcuni errori comuni che sono difficili da risolvere basandosi
 soltanto sui messaggi di errore che compaiono.  Questi sono
-descritti in @rprogram{Common errors}.
+descritti in @rprogram{Errori comuni}.
 
 
 @node Come leggere i manuali
 @section Come leggere i manuali
 @translationof How to read the manuals
 
-Questa sezione spiega come leggere la documentazione in modo efficiente, e
-introduce anche alcune utili funzionalità interattive che sono disponibili
+Questa sezione spiega come leggere la documentazione in modo efficiente e
+introduce alcune utili funzionalità interattive che sono disponibili
 nella versione online della documentazione.
 
 @menu
@@ -667,14 +668,14 @@ nella versione online della documentazione.
 
 L'input di LilyPond deve essere compreso dai segni @code{@{ @}} o da
 @q{@w{@code{@bs{}relative c'' @{ @dots{} @}}}}, come abbiamo visto in @ref{Lavorare
-sui file di input}.  Nella parte restante di questo manuale, gran parte
-degli esempi ometterà questi segni.  Per replicare gli esempi, puoi copiare
+sui file di input}.  Nel resto di questo manuale gran parte degli esempi
+ometterà questi segni.  Per replicare gli esempi, puoi copiare
 e incollare l'input mostrato, ma @strong{devi} aggiungere
 @q{@w{@code{@bs{}relative c'' @{ @dots{} @}}}} in questo modo:
 
 @example
 \relative c'' @{
-  @dots{}example goes here@dots{}
+  @dots{}inserire qui l'esempio@dots{}
 @}
 @end example
 
@@ -688,7 +689,7 @@ documentazione e incollarlo dentro a un tuo brano più
 esteso.  La maggior parte delle persone vuole aggiungere del materiale a
 un brano esistente, per questo abbiamo strutturato il manuale in questo modo.
 
-Ricorda che i file LilyPond dovrebbero avere una dichiarazione di
+Ricorda che i file LilyPond devono avere una dichiarazione di
 versione (@code{\version}).  Nei manuali la dichiarazione è omessa
 perché gli esempi sono frammenti di codice e non file completi.
 Ma dovresti prendere l'abitudine di includerla nei tuoi file.
@@ -708,7 +709,7 @@ questa immagine:
 @c no verbatim here
 @lilypond[quote]
 \relative c'' {
-  c4-\markup { \bold \huge { Click here.  } }
+  c4-\markup { \bold \huge { Clicca qui.  } }
 }
 @end lilypond
 
@@ -740,8 +741,8 @@ sono confusi su quali parti dovrebbero leggere, e ogni tanto
 saltano la lettura di parti fondamentali.
 
 @warning{Non saltare le parti importanti della
-documentazione.  Altrimenti ti risulterà molto più difficile comprendere
-le sezioni successive.}
+documentazione.  Altrimenti ti risulterà molto più difficile
+comprendere le sezioni successive.}
 
 @itemize
 
@@ -761,7 +762,7 @@ un'occhiata alle sezioni rilevanti della @rusernamed{Top, Notation reference}.
 
 @item
 @strong{Prima di iniziare un grande progetto}: leggi il documento
-@rprogram{Suggestions for writing files} del manuale di Uso del programma.
+@rprogram{Consigli su come scrivere i file} del manuale di Uso del programma.
 
 @end itemize
 
index 9fbcb395da5d20bade75a47a0a43727d0fd05220..f37afbcafd4fa9236c01011ffb54db34f9ad3f39 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 92190ad98deac78cf32837078741296205072119
+    Translation of GIT committish: 52f98b4061e0eb74b7c1dbcc29e74538b374752f
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -67,12 +67,41 @@ translations should be in macros.itexi.
 
 @end ifnothtml
 
+@c do not translate the following macro -- it is used in
+@c an untranslated manual.
+
+@ifhtml
+
+@macro advanced{TEXT}
+@html
+<div class="advanced">
+@end html
+@strong{Advanced note:} \TEXT\
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+@end ifhtml
+
+@ifnothtml
+
+@macro advanced{TEXT}
+@quotation
+@b{Advanced note:} \TEXT\
+@end quotation
+@end macro
+
+@end ifnothtml
+
 
 @macro docMain
 @cartouche
 Per maggiori informazioni su come questo manuale si integra col resto
 della documentazione, o per leggere questo manuale in altri formati, si veda
-@rweb{Manuals}.
+@rweb{Manuali}.
 
 Se ti manca qualche manuale, puoi trovare la completa documentazione
 all'indirizzo @w{@uref{http://@/www@/.lilypond@/.org/}}.
diff --git a/Documentation/it/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc b/Documentation/it/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc
new file mode 100644 (file)
index 0000000..56e558f
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo esempio mostra come realizzare una trascrizione moderna di musica
+gregoriana. La musica gregoriana non presenta suddivisione in misure né gambi;
+utilizza soltanto le teste della minima e della semiminima, e dei segni
+appositi che indicano pause di diversa lunghezza.
+
+"
+  doctitleit = "Modello per notazione antica -- trascrizione moderna di musica gregoriana"
diff --git a/Documentation/it/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc b/Documentation/it/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc
new file mode 100644 (file)
index 0000000..95eeae4
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Quando si trascrive musica mensurale, può essere utile inserire all'inizio del
+pezzo un incipit che indichi l'intonazione e il tempo originali. Le stanghette
+di battuta, a cui i musicisti di oggi sono abituati e che aiutano a riconoscere
+più velocemente gli schemi ritmici, durante l'epoca della musica mensurale non
+erano ancora state introdotte; infatti il metro cambiava spesso ogni poche
+note.  Come compromesso, le stanghette vengono spesso inserite tra i righi
+invece che al loro interno.
+
+"
+  doctitleit = "Modello per notazione antica -- trascrizione moderna di musica mensurale"
diff --git a/Documentation/it/texidocs/anglican-psalm-template.texidoc b/Documentation/it/texidocs/anglican-psalm-template.texidoc
new file mode 100644 (file)
index 0000000..94b18e2
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo modello presenta un modo di impostare un salmo anglicano.  Mostra
+anche come le strofe possono essere aggiunte come testo separato al di sotto
+della musica.  Le due strofe sono scritte con stili diversi per illustrare
+le varie possibilità.
+
+"
+  doctitleit = "Modello per salmo anglicano"
diff --git a/Documentation/it/texidocs/hymn-template.texidoc b/Documentation/it/texidocs/hymn-template.texidoc
new file mode 100644 (file)
index 0000000..1cd756b
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Il codice seguente presenta un modo di impostare un inno in cui ogni verso
+inizia e finisce con una misura parziale.  Mostra anche come aggiungere delle
+strofe come testo separato sotto la musica.
+
+"
+  doctitleit = "Modello per inno"
diff --git a/Documentation/it/texidocs/jazz-combo-template.texidoc b/Documentation/it/texidocs/jazz-combo-template.texidoc
new file mode 100644 (file)
index 0000000..7205ca7
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Ecco un modello piuttosto complesso, per un gruppo jazz. Si noti che tutti
+gli strumenti sono in @code{\\key c \\major}. Si tratta della tonalità
+reale; sarà trasposta automaticamente includendo la
+musica all'interno di una sezione @code{\\transpose}.
+
+"
+  doctitleit = "Modello per combo jazz"
diff --git a/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc b/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc
new file mode 100644 (file)
index 0000000..02880b3
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo modello mostra come usare i contesti annidati @code{StaffGroup} e
+@code{GrandStaff} per creare sottogruppi degli strumenti dello stesso
+tipo.  Mostra anche come usare @code{\\transpose} in modo che le variabili
+mantengano la musica per gli strumenti traspositori nell'intonazione reale.
+
+"
+  doctitleit = "Modello per orchestra, coro e pianoforte"
diff --git a/Documentation/it/texidocs/piano-template-simple.texidoc b/Documentation/it/texidocs/piano-template-simple.texidoc
new file mode 100644 (file)
index 0000000..6194f97
--- /dev/null
@@ -0,0 +1,6 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Ecco un comune doppio pentagramma per pianoforte con un po' di note.
+
+"
+  doctitleit = "Modello per pianoforte (semplice)"
diff --git a/Documentation/it/texidocs/piano-template-with-centered-dynamics.texidoc b/Documentation/it/texidocs/piano-template-with-centered-dynamics.texidoc
new file mode 100644 (file)
index 0000000..760408d
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Molti spartiti per pianoforte hanno le dinamiche poste al centro dei due righi.
+Il contesto @code{Dynamics}, se collocato tra i righi, posiziona automaticamente
+le dinamiche in modo corretto.
+
+"
+  doctitleit = "Modello per pianoforte con dinamiche al centro"
diff --git a/Documentation/it/texidocs/piano-template-with-centered-lyrics.texidoc b/Documentation/it/texidocs/piano-template-with-centered-lyrics.texidoc
new file mode 100644 (file)
index 0000000..ccea656
--- /dev/null
@@ -0,0 +1,7 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Invece di destinare un rigo a parte alla linea melodica e al suo testo, è
+possibile collocare il testo al centro di un doppio pentagramma per pianoforte.
+
+"
+  doctitleit = "Modello per pianoforte con testo al centro"
diff --git a/Documentation/it/texidocs/piano-template-with-melody-and-lyrics.texidoc b/Documentation/it/texidocs/piano-template-with-melody-and-lyrics.texidoc
new file mode 100644 (file)
index 0000000..54e200b
--- /dev/null
@@ -0,0 +1,7 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Ecco un tipico formato per canzoni: un rigo con linea melodica e testo,
+e sotto l'accompagnamento per pianoforte.
+
+"
+  doctitleit = "Modello per pianoforte con melodia e testo"
diff --git a/Documentation/it/texidocs/satb-choir-template---four-staves.texidoc b/Documentation/it/texidocs/satb-choir-template---four-staves.texidoc
new file mode 100644 (file)
index 0000000..fcb3308
--- /dev/null
@@ -0,0 +1,6 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Modello per coro SATB (quattro righi)
+
+"
+  doctitleit = "Modello per coro SATB - quattro righi"
diff --git a/Documentation/it/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc b/Documentation/it/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc
new file mode 100644 (file)
index 0000000..ac0eec5
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Ecco il modello di un comune spartito semplificato (lead sheet): include
+linea melodica, testo vocale, sigle degli accordi e relativi diagrammi
+per chitarra.
+
+"
+  doctitleit = "Modello di rigo singolo con note, testo, accordi e tasti"
diff --git a/Documentation/it/texidocs/single-staff-template-with-notes-and-chords.texidoc b/Documentation/it/texidocs/single-staff-template-with-notes-and-chords.texidoc
new file mode 100644 (file)
index 0000000..90c5342
--- /dev/null
@@ -0,0 +1,7 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Vuoi preparare uno spartito semplificato (lead sheet) con melodia e
+accordi?  La tua ricerca è finita!
+
+"
+  doctitleit = "Modello di rigo singolo con note e accordi"
diff --git a/Documentation/it/texidocs/single-staff-template-with-notes-and-lyrics.texidoc b/Documentation/it/texidocs/single-staff-template-with-notes-and-lyrics.texidoc
new file mode 100644 (file)
index 0000000..a65a6aa
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo piccolo modello presenta una semplice linea melodica con un testo. Copialo
+e incollalo, aggiungi le note e le parole. Questo esempio disabilita la
+disposizione automatica delle travature, come è consuetudine per le parti
+vocali. Per usare la disposizione automatica delle travature, cambia o
+commenta la relativa linea di codice.
+
+"
+  doctitleit = "Modello di rigo singolo con note e testo"
diff --git a/Documentation/it/texidocs/single-staff-template-with-only-notes.texidoc b/Documentation/it/texidocs/single-staff-template-with-only-notes.texidoc
new file mode 100644 (file)
index 0000000..92ff692
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo modello molto semplice mette a disposizione un rigo con delle note ed è
+quindi adatto per uno strumento non accompagnato o per un frammento 
+melodico. Copialo e incollalo in un file, aggiungi le note e hai finito!
+
+"
+  doctitleit = "Modello di rigo singolo con solo note"
diff --git a/Documentation/it/texidocs/string-quartet-template-simple.texidoc b/Documentation/it/texidocs/string-quartet-template-simple.texidoc
new file mode 100644 (file)
index 0000000..e589624
--- /dev/null
@@ -0,0 +1,7 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo modello presenta un semplice quartetto d'archi. Impiega anche una
+sezione @code{\\global} per definire il tempo e l'armatura di chiave.
+
+"
+  doctitleit = "Modello per quartetto d'archi (semplice)"
diff --git a/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc
new file mode 100644 (file)
index 0000000..66652d6
--- /dev/null
@@ -0,0 +1,18 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Il frammento di codice del @qq{Modello per quartetto d'archi} crea un bel
+quartetto, ma cosa fare se si ha bisogno di creare le singole parti? Questo
+nuovo modello mostra come usare la funzionalità @code{\\tag} per dividere
+facilmente un pezzo in parti staccate.
+
+Occorre dividere questo modello in file separati; i nomi dei file sono
+indicati nei commenti all'inizio di ogni file. @code{piece.ly}
+contiene tutte le definizioni musicali. Gli altri file – @code{score.ly},
+@code{vn1.ly}, @code{vn2.ly}, @code{vla.ly} e @code{vlc.ly} –
+creano ciascuna parte.
+
+
+Non dimenticare di togliere i commenti quando usi i file separati!
+
+"
+  doctitleit = "Modello per quartetto d'archi con parti separate"
diff --git a/Documentation/it/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc b/Documentation/it/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc
new file mode 100644 (file)
index 0000000..f66e6f7
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo modello aggiunge una riduzione automatica per pianoforte alla tipica
+partitura vocale SATB illustrata in @qq{Modello per complesso vocale}. Si
+dimostra così uno dei punti di forza di LilyPond – è possibile usare una
+definizione musicale più di una volta. Qualsiasi modifica venga fatta alle note
+delle voci (ad esempio, @code{tenorMusic}) verrà applicata anche alla riduzione
+per pianoforte.
+"
+  doctitleit = "Modello per gruppo vocale con automatica riduzione per pianoforte"
diff --git a/Documentation/it/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc b/Documentation/it/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc
new file mode 100644 (file)
index 0000000..19bea7c
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo modello è fondamentalmente analogo al semplice modello @qq{Complesso vocale},
+con l'unica differenza che qui tutti i versi del testo sono posizionati
+usando @code{alignAboveContext} e @code{alignBelowContext}.
+
+"
+  doctitleit = "Modello per gruppo vocale con testo allineato sotto e sopra i righi"
diff --git a/Documentation/it/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc b/Documentation/it/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc
new file mode 100644 (file)
index 0000000..a96795d
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Questo modello crea una partitura che inizia con una sezione solistica e
+prosegue in un ritornello a due voci.  Illustra anche l'uso delle
+pause spaziatrici all'interno della variabile @code{\\global} per definire
+i cambi di tempo (e altri elementi comuni a tutte le parti) nel corso di
+tutta la partitura.
+"
+  doctitleit = "Modello per gruppo vocale con strofa e ritornello"
diff --git a/Documentation/it/texidocs/vocal-ensemble-template.texidoc b/Documentation/it/texidocs/vocal-ensemble-template.texidoc
new file mode 100644 (file)
index 0000000..c34a63f
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Ecco una tipica partitura corale a quattro parti, SATB. Se il complesso è più
+ampio, è spesso comodo scrivere gli elementi comuni in un'unica sezione, che
+verrà poi inclusa in tutte le parti. Ad esempio, l'indicazione di tempo e
+l'armatura di chiave sono quasi sempre le stesse per tutte le parti. Come nel
+modello dell'@qq{Inno}, le quattro voci sono ripartite in due soli righi.
+"
+  doctitleit = "Modello per complesso vocale"
index 2d1a1eb5a3aa6d18b3e8f892cf98aff072c911c9..fb605fd226b1411d12b42b462758d3590fc4d9f1 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Last updated Thu Mar 24 14:52:33 UTC 2011
+@emph{Last updated Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -37,21 +37,21 @@ Section titles
 @ifhtml
 
 @html
-<span style="background-color: #dfef77">partially (93 %)</span>
+<span style="background-color: #1fff1f">yes</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially (93 %)
+yes
 @end ifnothtml
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #2cff20">partially</span>
+<span style="background-color: #1fff1f">yes</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially
+yes
 @end ifnothtml
 @tab pre-GDP
 @item
@@ -74,11 +74,11 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially</span>
+<span style="background-color: #1fff1f">yes</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially
+yes
 @end ifnothtml
 @tab pre-GDP
 @item
@@ -155,11 +155,38 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially</span>
+<span style="background-color: #1fff1f">yes</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially
+yes
+@end ifnothtml
+@tab pre-GDP
+@item
+A Modelli
+@*
+225
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
 @end ifnothtml
 @tab pre-GDP
 @end multitable
@@ -168,7 +195,7 @@ partially
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
 @headitem
-LilyPond -- Notazione musicale per tutti
+LilyPond: manuale d'uso del programma
 @tab Translators
 @tab Translation checkers
 @tab Translated
@@ -177,7 +204,7 @@ LilyPond -- Notazione musicale per tutti
 @item
 Section titles
 @*
-585
+135
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -194,11 +221,11 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially</span>
+<span style="background-color: #1fff1f">yes</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially
+yes
 @end ifnothtml
 @tab pre-GDP
 @item
@@ -220,6 +247,180 @@ yes
 @tab 
 @ifhtml
 
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab pre-GDP
+@item
+1 Eseguire @command{lilypond}
+@*
+3622
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab pre-GDP
+@item
+2 Aggiornare i file con @command{convert-ly}
+@*
+1189
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab pre-GDP
+@item
+3 Eseguire @command{lilypond-book}
+@*
+3952
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab pre-GDP
+@item
+4 Programmi esterni
+@*
+2170
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab pre-GDP
+@item
+5 Consigli su come scrivere i file
+@*
+2694
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab pre-GDP
+@end multitable
+
+
+@multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
+
+@headitem
+LilyPond -- Notazione musicale per tutti
+@tab Translators
+@tab Translation checkers
+@tab Translated
+@tab Up to date
+@tab Other info
+@item
+Section titles
+@*
+585
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">yes</span>
+@end html
+@end ifhtml
+@ifnothtml
+yes
+@end ifnothtml
+@tab 
+@ifhtml
+
 @html
 <span style="background-color: #25fe1f">partially</span>
 @end html
@@ -229,9 +430,9 @@ partially
 @end ifnothtml
 @tab pre-GDP
 @item
-Introduzione
+LilyPond --- \TITLE\
 @*
-4506
+1139
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -256,9 +457,9 @@ yes
 @end ifnothtml
 @tab pre-GDP
 @item
-Download
+Introduzione
 @*
-1183
+4564
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -274,6 +475,23 @@ yes
 @tab 
 @ifhtml
 
+@html
+<span style="background-color: #25fe1f">partially</span>
+@end html
+@end ifhtml
+@ifnothtml
+partially
+@end ifnothtml
+@tab pre-GDP
+@item
+Download
+@*
+1195
+@tab Federico Bruni
+@tab Luca Rossetto Casel
+@tab 
+@ifhtml
+
 @html
 <span style="background-color: #1fff1f">yes</span>
 @end html
@@ -281,11 +499,21 @@ yes
 @ifnothtml
 yes
 @end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #25fe1f">partially</span>
+@end html
+@end ifhtml
+@ifnothtml
+partially
+@end ifnothtml
 @tab pre-GDP
 @item
 Manuali
 @*
-1200
+1203
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -302,11 +530,11 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">yes</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-yes
+partially
 @end ifnothtml
 @tab pre-GDP
 @item
diff --git a/Documentation/it/usage/external.itely b/Documentation/it/usage/external.itely
new file mode 100644 (file)
index 0000000..8bcd600
--- /dev/null
@@ -0,0 +1,619 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+
+@ignore
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.13.36"
+
+@node Programmi esterni
+@chapter Programmi esterni
+@translationof External programs
+
+LilyPond può interagire con altri programmi in vari modi.
+
+@menu
+* Punta e clicca::
+* LilyPond e gli editor di testo::
+* Conversione da altri formati::
+* Inclusione di partiture LilyPond in altri programmi::
+* Inclusioni indipendenti::
+@end menu
+
+
+@node Punta e clicca
+@section Punta e clicca
+@translationof Point and click
+
+@cindex punta e clicca
+
+Il "punta e clicca" (@emph{point and click}) permette di individuare gli elementi
+musicali nell'input cliccando su di essi nel lettore PDF.  In questo modo è più
+facile trovare la parte dell'input responsabile di un errore nello spartito.
+
+Quando questa funzionalità è attiva, LilyPond aggiunge dei collegamenti
+ipertestuali al file PDF.  Questi collegamenti vengono inviati al browser web,
+che apre un editor di testo col cursore posizionato nel punto giusto.
+
+Perché questo procedimento funzioni è necessario configurare il lettore PDF
+in modo che segua i collegamenti ipertestuali usando lo script @file{lilypond-invoke-editor}
+fornito insieme a LilyPond.
+
+Per Xpdf su UNIX, occorre inserire la seguente linea nel file
+@file{xpdfrc}@footnote{Su UNIX, questo file si trova in
+@file{/etc/xpdfrc} o come @file{.xpdfrc} nella propria directory home.}
+
+@example
+urlCommand     "lilypond-invoke-editor %s"
+@end example
+
+@file{lilypond-invoke-editor} è un piccolo programma di supporto.  Lancia un
+editor per gli URI @code{textedit} e un browser web per altri URI.  Valuta
+la variabile d'ambiente @code{EDITOR} in base a questi schemi,
+
+@table @code
+@item emacs
+  verrà quindi lanciato il comando
+@example
+emacsclient --no-wait +@var{line}:@var{column} @var{file}
+@end example
+@item gvim
+  verrà quindi lanciato il comando
+@example
+gvim --remote +:@var{line}:norm@var{column} @var{file}
+@end example
+
+@item nedit
+  verrà quindi lanciato il comando
+@example
+  nc -noask +@var{line} @var{file}'
+@end example
+@end table
+
+La variabile d'ambiente @code{LYEDITOR} ha la precedenza sulla variabile
+@code{EDITOR}.  Contiene il comando per lanciare l'editor, dove @code{%(file)s},
+@code{%(column)s}, @code{%(line)s} vengono sostituiti rispettivamente dal file,
+dalla colonna e dalla riga.  L'impostazione
+
+@example
+emacsclient --no-wait +%(line)s:%(column)s %(file)s
+@end example
+
+@noindent
+per @code{LYEDITOR} è equivalente alla chiamata standard emacsclient.
+
+
+@cindex file size, output
+
+I collegamenti "punta e clicca" appesantiscono sensibilmente i file di output.  Per
+ridurre la dimensione dei file PDF e PS, è possibile disattivare il "punta e
+clicca" inserendo
+
+@example
+\pointAndClickOff
+@end example
+
+@noindent
+in un file @file{.ly}.  Il "punta e clicca" può essere abilitato esplicitamente con
+
+@example
+\pointAndClickOn
+@end example
+
+Si può disabilitare il "punta e clicca" anche con un'opzione da linea di
+comando:
+
+@example
+lilypond -dno-point-and-click file.ly
+@end example
+
+@warning{Occorre sempre disattivare il "punta e clicca" nei file LilyPond
+che si vogliano diffondere, per evitare di includere nel file .pdf delle informazioni
+sui percorsi del proprio computer: questo infatti può costituire un rischio di
+sicurezza.}
+@node LilyPond e gli editor di testo
+@section LilyPond e gli editor di testo
+@translationof Text editor support
+
+@cindex editor
+@cindex vim
+@cindex emacs
+@cindex modalità, editor
+@cindex sintassi, colorazione
+@cindex colorazione della sintassi
+
+Vari editor di testo hanno funzionalità specifiche per LilyPond.
+
+@menu
+* Modalità di Emacs::
+* Modalità di Vim::
+* Altri editor::
+@end menu
+
+@node Modalità di Emacs
+@unnumberedsubsec Modalità di Emacs
+@translationof Emacs mode
+
+Emacs ha una modalità @file{lilypond-mode}, che fornisce il completamento
+delle parole, l'indentazione, le parentesi automatiche e la colorazione
+della sintassi specifiche di LilyPond, comode scorciatoie per la compilazione e
+la possibilità di leggere i manuali di LilyPond usando Info.  Se @file{lilypond-mode}
+non è installato nel tuo computer, vedi sotto.
+
+Una modalità Emacs per inserire la musica e eseguire LilyPond è presente
+nell'archivio dei sorgenti nella directory @file{elisp}.  Lancia @command{make
+install} per installarla in @var{elispdir}.  Il file @file{lilypond-init.el}
+deve essere messo in @var{load-path}@file{/site-start.d/} o aggiunto a
+@file{~/.emacs} oppure @file{~/.emacs.el}.
+
+Come utente normale, puoi aggiungere il percorso dei sorgenti (ad esempio @file{~/site-lisp/})
+al tuo @var{load-path} aggiungendo la seguente riga (modificata di conseguenza)
+al file @file{~/.emacs}
+
+@c any reason we do not advise:  (push "~/site-lisp" load-path)
+@example
+(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
+@end example
+
+
+@node Modalità di Vim
+@unnumberedsubsec Modalità di Vim
+@translationof Vim mode
+
+Per @uref{http://@/www@/.vim@/.org,Vim}, sono disponibili le seguenti funzionalità
+per LilyPond: un plugin di riconoscimento del tipo di file, una modalità di indentazione e di
+evidenziazione della sintassi.  Per abilitarle, crea (o modifica) il file
+@file{$HOME/.vimrc} in modo che contenga queste tre righe, in questo ordine:
+
+@example
+filetype off
+set runtimepath+=/usr/local/share/lilypond/current/vim/
+filetype on
+@end example
+
+@noindent
+Se LilyPond non è installato nella directory @file{/usr/local/},
+modifica il percorso in modo adeguato.  Questo argomento è trattato in
+@rlearning{Other sources of information}.
+
+
+@node Altri editor
+@unnumberedsubsec Altri editor
+@translationof Other editors
+
+Altri editor (sia testuali che grafici) supportano LilyPond, ma i loro
+specifici file di configurazione non sono distribuiti insieme a
+LilyPond.  Consulta la documentazione di questi programmi per maggiori
+informazioni.  Questi editor sono elencati in @rweb{Easier editing}.
+
+
+@node Conversione da altri formati
+@section Conversione da altri formati
+@translationof Converting from other formats
+
+È possibile inserire la musica anche importandola da altri formati.  Questo
+capitolo documenta gli strumenti inclusi nella distribuzione che svolgono
+questo compito.  Esistono altri strumenti che producono l'input di LilyPond, ad
+esempio i sequencer ad interfaccia grafica e i convertitori XML.  Per maggiori
+dettagli consulta il @uref{http://@/lilypond@/.org,sito web}.
+
+Si tratta di programmi separati da @command{lilypond}  e sono eseguiti
+dalla linea di comando; si veda @ref{Command-line usage} per maggiori
+informazioni.  Se usi MacOS 10.3 o 10.4 e hai problemi a
+eseguire alcuni di questi script, ad esempio @code{convert-ly}, vedi
+@rweb{MacOS X}.
+
+
+@knownissues
+Purtroppo non abbiamo le risorse per mantenere questi programmi; prendeteli
+@qq{così come sono}!  Accettiamo con piacere le @emph{patch}, ma ci sono
+poche possibilità che i bug vengano risolti.
+
+@menu
+* Utilizzo di midi2ly::            Importare MIDI.
+* Utilizzo di musicxml2ly::        Importare MusicXML.
+* Utilizzo di abc2ly::             Importare ABC.
+* Utilizzo di etf2ly::             Importare Finale.
+* Altri formati::
+@end menu
+
+
+
+@node Utilizzo di midi2ly
+@subsection Utilizzo di @command{midi2ly}
+@translationof Invoking midi2ly
+
+@cindex MIDI
+
+@command{midi2ly} trasforma un file MIDI Type@tie{}1 in un file sorgente
+di LilyPond.
+
+Il protocollo MIDI (Music Instrument Digital Interface) è uno standard per gli
+strumenti digitali: fornisce le specifiche per la connessione via cavo, un
+protocollo seriale e un formato di file.  Il formato MIDI è uno standard de
+facto per esportare la musica da altri programmi, dunque questa capacità diventa
+utile quando si importano file creati con un programma che converta
+direttamente in questo formato.
+
+@command{midi2ly} converte le tracce presenti nei contesti @rinternals{Staff} e
+i canali dei contesti @rinternals{Voice}.  Per indicare le altezze viene usata
+la modalità relativa, mentre le durate sono precisate solo quando necessario.
+
+È possibile registrare un file MIDI usando una tastiera digitale e poi
+convertirlo in file @file{.ly}.  Tuttavia, la conversione da MIDI a LY non
+è banale: l'esecuzione umana non sarà mai sufficientemente precisa dal punto di vista
+ritmico.  Se lanciata con la quantizzazione (opzioni @code{-s} e @code{-d})
+@command{midi2ly} cerca di compensare questi errori di tempo, ma non è
+molto efficace.  Dunque non si raccomanda l'uso di @command{midi2ly}
+per i file midi generati a partire da un'esecuzione umana.
+
+
+Si lancia dalla linea di comando in questo modo:
+@example
+midi2ly [@var{opzione}]@dots{} @var{file-midi}
+@end example
+
+Attenzione: per @q{linea di comando} si intende la linea di comando
+del sistema operativo.  Si veda @ref{Converting from other formats} per
+maggiori informazioni su questo argomento.
+
+@command{midi2ly} accetta le seguenti opzioni.
+
+@table @code
+@item -a, --absolute-pitches
+Crea altezze assolute.
+
+@item -d, --duration-quant=@var{DUR}
+Quantizza la durata delle note di @var{DUR}.
+
+@item -e, --explicit-durations
+Crea durate esplicite.
+
+@item -h,--help
+Mostra una sintesi dell'utilizzo del programma.
+
+@item -k, --key=@var{acc}[:@var{minor}]
+Imposta la tonalità predefinita.  @math{@var{acc} > 0} imposta il numero di
+diesis; @math{@var{acc} < 0} imposta il numero di bemolle.  Una tonalità
+minore si indica con @code{:1}.
+
+@item -o, --output=@var{file}
+Scrive l'output in @var{file}.
+
+@item -s, --start-quant=@var{DUR}
+Quantize note starts on @var{DUR}.
+
+@item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN}
+Consente l'inserimento di gruppi irregolari @var{DUR}*@var{NUM}/@var{DEN}.
+
+@item -v, --verbose
+Mostra un output dettagliato.
+
+@item -V, --version
+Mostra il numero di versione.
+
+@item -w, --warranty
+Mostra la garanzia e il copyright.
+
+@item -x, --text-lyrics
+Interpreta il testo come liriche.
+@end table
+
+
+@knownissues
+
+Le note sovrapposte in un arpeggio non sono rese correttamente: viene letta
+solo la prima nota, mentre le altre vengono ignorate.  Assegna a tutte la stessa
+durata e introduci le opportune indicazioni di fraseggio o di pedalizzazione.
+
+
+@node Utilizzo di musicxml2ly
+@subsection Utilizzo di @code{musicxml2ly}
+@translationof Invoking musicxml2ly
+
+@cindex MusicXML
+
+@uref{http://@/www.@/musicxml@/.org/,MusicXML} è un dialetto di XML
+che viene usato per rappresentare la notazione musicale.
+
+@command{musicxml2ly} estrae le note, le articolazioni, la struttura della
+partitura, il testi, etc. da file MusicXML organizzati in parti; quindi li
+scrive in un file @file{.ly}.  Si usa dalla linea di comando.
+
+
+Si lancia dalla linea di comando nel modo seguente,
+@example
+musicxml2ly [@var{opzione}]@dots{} @var{file-xml}
+@end example
+
+Attenzione: per @q{linea di comando} si intende la linea di comando
+del sistema operativo.  Si veda @ref{Converting from other formats} per
+maggiori informazioni su questo argomento.
+
+Se il nome del file è @file{-}, @command{musicxml2ly} legge l'input
+dalla linea di comando.
+
+@command{musicxml2ly} accetta le seguenti opzioni:
+
+@table @code
+@item -a, --absolute
+converte le altezze relative in assolute.
+
+@item -h,--help
+mostra una sintesi dell'utilizzo e delle opzioni.
+
+@item -l, --language=LANG
+usa LANG per i nomi delle altezze, ad esempio 'deutsch' per i nomi delle note
+in tedesco.
+
+@item --lxml
+usa il pacchetto Python lxml.etree per l'analisi della sintassi XML; usa meno
+memoria e tempo del processore.
+
+@item --nd --no-articulation-directions
+non converte le direzioni (@code{^}, @code{_} o @code{-}) per
+articolazioni, dinamiche, etc.
+
+@item --no-beaming
+ignora le informazioni relative alle travature, impiegando la disposizione
+automatica delle travature fornita da LilyPond.
+
+@item -o,--output=@var{file}
+imposta il nome del file di output su @var{file}.  Se @var{file} è @file{-}, l'output
+sarà salvato su stdout.  Se non specificato, verrà usato @var{file-xml}@file{.ly}.
+
+@item -r,--relative
+converte le altezze in modalità relativa (predefinito).
+
+@item -v, --verbose
+Mostra un output dettagliato.
+
+@item --version
+Mostra informazioni sulla versione.
+
+@item -z,--compressed
+il file di input è un file MusicXML compresso in un archivio ZIP.
+@end table
+
+
+@node Utilizzo di abc2ly
+@subsection Utilizzo di @code{abc2ly}
+@translationof Invoking abc2ly
+
+@warning{Questo programma non è supportato e potrebbe essere rimosso
+dalle future versioni di LilyPond.}
+
+@cindex ABC
+
+ABC è un semplice formato basato su ASCII.  È descritto nel sito di ABC:
+
+@quotation
+@uref{http://@/www@/.walshaw@/.plus@/.com/@/abc/@/learn@/.html}.
+@end quotation
+
+@command{abc2ly} traduce dal formato ABC al formato LilyPond.  Viene lanciato
+nel modo seguente:
+
+@example
+abc2ly [@var{opzione}]@dots{} @var{file-abc}
+@end example
+
+@command{abc2ly} accetta le seguenti opzioni:
+
+@table @code
+@item -b,--beams=None
+preserva le regole di disposizione delle travature di ABC
+@item -h,--help
+mostra questo messaggio di aiuto
+@item -o,--output=@var{file}
+imposta il nome del file di output su @var{file}.
+@item -s,--strict
+imposta una modalità di interpretazione letterale per effettuare una conversione stretta
+@item --version
+mostra informazioni sulla versione.
+@end table
+
+Esiste una rudimentale funzione per aggiungere codice LilyPond nel
+file sorgente ABC.  Se scrivi:
+
+@example
+%%LY voices \set autoBeaming = ##f
+@end example
+
+il testo che segue la parola chiave @q{voices} verrà inserito
+nella voce in uso del file di output LilyPond.
+
+Analogalmente,
+
+@example
+%%LY slyrics more words
+@end example
+
+fa sì che il testo che segue la parola chiave @q{slyrics} venga inserito
+nella riga corrente del testo.
+
+
+@knownissues
+
+Lo standard ABC standard non è molto @q{standard}.  Per le funzionalità più
+avanzate (ad esempio, la musica polifonica) esistono diversi tipi di convenzioni.
+
+Un file che contiene più di un brano non può essere convertito.
+
+ABC allinea le parole e le note all'inizio di una riga; @command{abc2ly} non
+lo fa.
+
+@command{abc2ly} ignora la disposizione delle travature fatta da ABC.
+
+
+@node Utilizzo di etf2ly
+@subsection Utilizzo di @command{etf2ly}
+@translationof Invoking etf2ly
+
+@warning{Questo programma non è supportato e potrebbe essere rimosso
+dalle future versioni di LilyPond.}
+
+@cindex ETF
+@cindex enigma
+@cindex Finale
+@cindex Coda Technology
+
+ETF (Enigma Transport Format) è un formato usato da Finale, un prodotto di Coda
+Music Technology.  @command{etf2ly} converte parte di un file ETF
+in un file LilyPond pronto all'uso.
+
+Si lancia dalla linea di comando nel modo seguente.
+
+@example
+etf2ly [@var{opzione}]@dots{} @var{file-etf}
+@end example
+
+Attenzione: per @q{linea di comando} si intende la linea di comando
+del sistema operativo.  Si veda @ref{Converting from other formats} per
+maggiori informazioni su questo argomento.
+
+@command{etf2ly} accetta le seguenti opzioni:
+
+@table @code
+@item -h,--help
+mostra questo messaggio di aiuto
+@item -o,--output=@var{FILE}
+imposta il nome del file di output su @var{FILE}
+@item --version
+mostra informazioni sulla versione
+@end table
+
+
+@knownissues
+
+La lista degli script per gestire le articolazioni è incompleta.  Le misure vuote
+confondono @command{etf2ly}.  Le sequenze di abbellimenti non sono risolte correttamente.
+
+
+@node Altri formati
+@subsection Altri formati
+@translationof Other formats
+
+@cindex Programmi esterni, generare file LilyPond
+
+LilyPond non supporta la conversione da altri formati, ma esistono alcuni
+strumenti esterni che possono generare file LilyPond.  L'elenco si trova
+in @rweb{Easier editing}.
+
+
+
+@node Inclusione di partiture LilyPond in altri programmi
+@section Inclusione di partiture LilyPond in altri programmi
+@translationof LilyPond output in other programs
+
+Questa sezione presenta dei metodi per integrare testo e musica diversi
+dal metodo automatizzato di @command{lilypond-book}.
+
+@menu
+* Tante citazioni da una grande partitura::
+* Inserire l'output di LilyPond in OpenOffice.org::
+* Inserire l'output di LilyPond in altri programmi::
+@end menu
+
+@node Tante citazioni da una grande partitura
+@unnumberedsubsec Tante citazioni da una grande partitura
+@translationof Many quotes from a large score
+
+Per inserire molti frammenti di una grande partitura, si può usare anche
+la funzione di ritaglio dei sistemi; si veda @ruser{Extracting fragments of music}.
+
+
+@node Inserire l'output di LilyPond in OpenOffice.org
+@unnumberedsubsec Inserire l'output di LilyPond in OpenOffice.org
+@translationof Inserting LilyPond output into OpenOffice.org
+
+@cindex OpenOffice.org
+
+La notazione di LilyPond può essere aggiunta a OpenOffice.org con
+@uref{http://@/ooolilypond@/.sourceforge@/.net@/,OOoLilyPond}.
+
+
+@node Inserire l'output di LilyPond in altri programmi
+@unnumberedsubsec Inserire l'output di LilyPond in altri programmi
+@translationof Inserting LilyPond output into other programs
+
+Per inserire l'output di LilyPond in altri programmi, si usa @code{lilypond}
+invece di @code{lilypond-book}.  Bisogna creare ogni esempio singolarmente
+e aggiungerlo al documento; consulta la documentazione del realtivo
+programma.  La maggior parte dei programmi può inserire l'output di LilyPond
+in formato @file{PNG}, @file{EPS} o @file{PDF}.
+
+Per ridurre lo spazio bianco intorno alla partitura LilyPond, si usano
+le seguenti opzioni
+
+@example
+\paper@{
+  indent=0\mm
+  line-width=120\mm
+  oddFooterMarkup=##f
+  oddHeaderMarkup=##f
+  bookTitleMarkup = ##f
+  scoreTitleMarkup = ##f
+@}
+
+@{ c1 @}
+@end example
+
+Per creare un file @file{EPS}, si usa
+
+@example
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts   miofile.ly
+
+@file{PNG}:
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png miofile.ly
+@end example
+
+
+@node Inclusioni indipendenti
+@section @code{include} indipendenti
+@translationof Independent includes
+
+Alcuni hanno scritto ampi (e utili!) frammenti di codice che possono
+essere condivisi da progetti diversi.  Questo codice potrebbe alla fine
+entrare a far parte di LilyPond, ma finché questo non avviene occorre
+scaricarlo e includerlo manualmente con @code{\include}.
+
+
+@menu
+* Articolazione MIDI::
+@end menu
+
+
+@node Articolazione MIDI
+@subsection Articolazione MIDI
+@translationof MIDI articulation
+
+LilyPond permette di generare l'output MIDI, che consente di
+@qq{verificare a orecchio} quanto è stato scritto.  Tuttavia l'output
+contiene solo la dinamica, i segni di tempo espliciti, le note e le loro
+durate.
+
+Il progetto @emph{articulate} costituisce un tentativo di inviare al file
+MIDI maggiori informazioni sulla partitura.  Il suo funzionamento si basa
+sull'abbreviazione delle note prive di legatura di portamento, in
+modo da @q{articolare} le note.  Questa riduzione dipende dai segni di
+articolazione attaccati a una nota: staccato dimezza il valore della nota, tenuto
+assegna alla nota la sua intera durata, e così via.  Lo script è consapevole anche dei
+trilli e dei gruppetti; può essere esteso per elaborare altri ornamenti come i
+mordenti.
+
+@example
+@uref{http://@/www@/.nicta@/.com@/.au/@/people/@/chubbp/@/articulate}
+@end example
+
+@knownissues
+
+La sua principale limitazione è che può agire solo sugli elementi che
+conosce: qualsiasi cosa che sia del semplice testo (invece di una proprietà
+della nota) viene dunque ignorato.
+
+
diff --git a/Documentation/it/usage/lilypond-book.itely b/Documentation/it/usage/lilypond-book.itely
new file mode 100644 (file)
index 0000000..81f0d77
--- /dev/null
@@ -0,0 +1,1296 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+
+@ignore
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.13.36"
+
+@c Note: keep this node named so that `info lilypond-book' brings you here.
+@node lilypond-book
+@chapter Eseguire @command{lilypond-book}
+
+Se si desidera aggiungere a un documento illustrazioni musicali, si può
+semplicemente fare nello stesso modo in cui si farebbe con altri tipi di
+immagini: prima si creano le immagini separatamente, in formato PostScript o
+PNG, poi le si includono in un documento @LaTeX{} o HTML.
+
+@command{lilypond-book} offre la possibilità di automatizzare tale procedimento: questo
+programma estrae i frammenti musicali dal documento, esegue @command{lilypond}
+su di essi e crea un nuovo documento contenente le illustrazioni musicali così
+ottenute.  Le definizioni relative alla larghezza del rigo e alle dimensioni
+dei caratteri vengono regolate per adeguarsi alla formattazione del documento.
+
+Si tratta di un programma separato da @command{lilypond} e viene lanciato
+dalla linea di comando; per maggiori informazioni, si veda @ref{Command-line
+usage}.  Chi usa MacOS 10.3 o 10.4 e non riesce ad eseguire
+@code{lilypond-book} veda @rweb{MacOS X}.
+
+Questo procedimento può essere applicato ai documenti @LaTeX{}, HTML, Texinfo
+o DocBook.
+
+@cindex texinfo
+@cindex latex
+@cindex texinfo
+@cindex texi
+@cindex html
+@cindex docbook
+@cindex documenti, aggiungere musica ai
+@cindex HTML, musica in
+@cindex Texinfo, musica in
+@cindex DocBook, musica in
+@cindex @LaTeX{}, musica in
+
+@menu
+* Un esempio di documento musicologico::
+* Integrare musica e testo::
+* Opzioni dei frammenti musicali::
+* Utilizzo di lilypond-book::
+* Estensioni dei nomi di file::
+* Modelli per lilypond-book::
+* Condividere l'indice::
+* Metodi alternativi per combinare testo e musica::
+@end menu
+
+
+@node Un esempio di documento musicologico
+@section Un esempio di documento musicologico
+@translationof An example of a musicological document
+
+@cindex musicologia
+Alcuni testi contengono degli esempi musicali: si tratta di
+trattati musicologici, canzonieri o manuali come questo.  È possibile
+crearli a mano, semplicemente importando un'immagine PostScript
+nell'elaboratore di testo.  Tuttavia esiste una procedura automatizzata
+che permette di ridurre il carico di lavoro richiesto dai documenti in
+formato HTML, @LaTeX{}, Texinfo e DocBook.
+
+Uno script chiamato @code{lilypond-book} estrarrà i frammenti musicali, li
+formatterà e restituirà la notazione risultante.  Ecco un piccolo esempio
+da usare con @LaTeX{}.  L'esempio contiene anche del testo esplicativo,
+dunque non è necessario entrare nei dettagli.
+
+@subheading Input
+
+@quotation
+@verbatim
+\documentclass[a4paper]{article}
+
+\begin{document}
+
+I documenti per \verb+lilypond-book+ possono combinare liberamente musica e testo.
+Ad esempio,
+
+\begin{lilypond}
+\relative c' {
+  c2 e2 \times 2/3 { f8 a b } a2 e4
+}
+\end{lilypond}
+
+Le opzioni vengono specificate tra parentesi quadre.
+
+\begin{lilypond}[fragment,quote,staffsize=26,verbatim]
+  c'4 f16
+\end{lilypond}
+
+Se l'esempio è più grande, è possibile metterlo in un file separato e inserirlo
+con \verb+\lilypondfile+.
+
+\lilypondfile[quote,noindent]{screech-boink.ly}
+
+(Se vuoi provare, sostituisci @file{screech-boink.ly} con qualsiasi file @file{.ly}
+che si trovi nella stessa directory di questo file.)
+
+\end{document}
+@end verbatim
+@end quotation
+
+@subheading Elaborazione
+
+Salva il codice precedente in un file chiamato @file{lilybook.lytex}, quindi
+esegui in un terminale
+
+@c keep space after @version{} so TeX doesn't choke
+@example
+lilypond-book --output=out --pdf lilybook.lytex
+@emph{lilypond-book (GNU LilyPond) @version{} }
+@emph{Lettura di lilybook.lytex...}
+@emph{..tagliato molto output..}
+@emph{Compilazione di lilybook.tex...}
+cd out
+pdflatex lilybook.tex
+@emph{..tagliato molto output..}
+xpdf lilybook.pdf
+@emph{(sostituisci @command{xpdf} col tuo lettore PDF preferito)}
+@end example
+
+L'esecuzione di @command{lilypond-book} e @command{pdflatex} crea molti file
+temporanei e questo potrebbe rendere disordinata la directory di lavoro.  Per
+ovviare a questo inconveniente, è consigliabile usare l'opzione @code{--output=@var{dir}}.  In questo
+modo i file verranno salvati in una sottodirectory @file{dir} separata.
+
+Infine ecco il risultato dell'esempio in @LaTeX{}.@footnote{Questo
+tutorial è elaborato da Texinfo, dunque l'esempio produce dei risultati
+leggermente diversi nella formattazione.}  Si conclude qui la parte di
+tutorial.
+
+@page
+
+@subheading Output
+
+I documenti per \verb+lilypond-book+ possono combinare liberamente musica e testo.
+Ad esempio,
+
+@lilypond
+\relative c' {
+  c2 e2 \times 2/3 { f8 a b } a2 e4
+}
+@end lilypond
+
+Le opzioni vengono specificate tra parentesi quadre.
+
+@lilypond[fragment,quote,staffsize=26,verbatim]
+c'4 f16
+@end lilypond
+
+Se l'esempio è più grande, è possibile riportarlo in un file a parte e inserirlo
+con \verb+\lilypondfile+.
+
+@lilypondfile[quote,noindent]{screech-boink.ly}
+
+Perché sia visibile la @code{tagline}, predefinita o personalizzata, l'intero
+frammento deve essere compreso in un costrutto @code{\book @{ @}}.
+
+@lilypond[papersize=a8,verbatim]
+\book{
+  \header{
+    title = "Una scala in LilyPond"
+  }
+
+  \relative c' {
+    c d e f g a b c
+  }
+}
+@end lilypond
+
+@page
+
+@node Integrare musica e testo
+@section Integrare musica e testo
+@translationof Integrating music and text
+
+Questa sezione spiega come integrare LilyPond in vari formati di output.
+
+@menu
+* LaTeX::
+* Texinfo::
+* HTML::
+* DocBook::
+@end menu
+
+@node LaTeX
+@subsection @LaTeX{}
+
+@LaTeX{} costituisce lo standard de facto per le pubblicazioni nell'ambito
+delle scienze esatte.  Si basa sul motore tipografico @TeX{}, che produce la
+migliore qualità tipografica possibile.
+
+Si veda
+@uref{http://@/www@/.ctan@/.org/@/tex@/-archive/@/info/@/lshort/@/english/,
+@emph{The Not So Short Introduction to @LaTeX{}}} per una panoramica
+sull'uso di @LaTeX{}.
+
+La musica si inserisce in vari modi:
+
+@example
+\begin@{lilypond@}[le,opzioni,vanno,qui]
+  CODICE LILYPOND
+\end@{lilypond@}
+@end example
+
+@noindent
+oppure
+
+@example
+\lilypondfile[le,opzioni,vanno,qui]@{@var{nomefile}@}
+@end example
+
+@noindent
+oppure
+
+@example
+\lilypond[le,opzioni,vanno,qui]@{ CODICE LILYPOND @}
+@end example
+
+Inoltre, @code{\lilypondversion} mostra la versione
+di lilypond impiegata.
+L'esecuzione di @command{lilypond-book} produce un file che può essere
+ulteriormente elaborato con @LaTeX{}.
+
+Vediamo alcuni esempi.  L'ambiente @code{lilypond}
+
+@example
+\begin@{lilypond@}[quote,fragment,staffsize=26]
+  c' d' e' f' g'2 g'2
+\end@{lilypond@}
+@end example
+
+@noindent
+genera
+
+@lilypond[quote,fragment,staffsize=26]
+c' d' e' f' g'2 g'2
+@end lilypond
+
+La versione breve
+
+@example
+\lilypond[quote,fragment,staffsize=11]@{<c' e' g'>@}
+@end example
+
+@noindent
+genera
+
+@lilypond[quote,fragment,staffsize=11]{<c' e' g'>}
+
+@noindent
+Attualmente non è possibile includere @code{@{} o @code{@}} all'interno di
+@code{\lilypond@{@}}, dunque questo comando è utile solo se usato con
+l'opzione @code{fragment}.
+
+La lunghezza predefinita del rigo musicale sarà regolata in base ai
+comandi presenti nel preambolo del documento, ovvero la parte del documento
+che precede @code{\begin@{document@}}.  Il comando @command{lilypond-book}
+li invia a @LaTeX{} per definire la larghezza del testo.  La larghezza del
+rigo nei frammenti musicali è quindi regolato in base alla larghezza del
+testo.  Si noti che questo algoritmo euristico può fallire facilmente; in
+questi casi occorre usare l'opzione @code{line-width} nel frammento musicale.
+
+@cindex titoli e lilypond-book
+@cindex \header nei documenti @LaTeX{}
+
+Ogni frammento chiamerà le seguenti macro se sono state definite
+dall'utente:
+
+@itemize @bullet
+@item @code{\preLilyPondExample} prima della musica,
+
+@item @code{\postLilyPondExample} dopo la musica,
+
+@item @code{\betweenLilyPondSystem[1]} tra i sistemi, se
+@code{lilypond-book} ha diviso il frammento in più file
+PostScript.  Prende un parametro e riceve
+tutti i file già inclusi in questo frammento.
+Per impostazione predefinita inserisce semplicemente un @code{\linebreak}.
+@end itemize
+
+@ignore
+Broken stuff.  :(
+
+@cindex Latex, feta symbols
+@cindex fetachar
+
+To include feta symbols (such as flat, segno, etc) in a LaTeX
+document, use @code{\input@{titledefs@}}
+
+@example
+\documentclass[a4paper]@{article@}
+
+\input@{titledefs@}
+
+\begin@{document@}
+
+\fetachar\fetasharp
+
+\end@{document@}
+@end example
+
+The font symbol names are defined in the file feta20.tex; to find
+the location of this file, use the command
+
+@example
+kpsewhich feta20.tex
+@end example
+
+@end ignore
+
+@snippets
+
+Talvolta si ha necessità di mostrare degli elementi musicali (ad esempio le
+legature di portamento e di valore) che proseguono dopo la fine del
+frammento.  È possibile inserirli mandando il rigo a capo e
+impedendo l'inclusione del restante output di LilyPond.
+
+In @LaTeX{}, si definisce @code{\betweenLilyPondSystem} in modo tale che
+l'inclusione di altri sistemi venga terminata una volta incluso il
+numero di sistemi richiesti.  Dato che @code{\betweenLilyPondSystem} viene
+chiamato la prima volta @emph{dopo} il primo sistema, includere solo il primo
+sistema è semplice.
+
+@example
+\def\betweenLilyPondSystem#1@{\endinput@}
+
+\begin@{lilypond@}[fragment]
+  c'1\( e'( c'~ \break c' d) e f\)
+\end@{lilypond@}
+@end example
+
+Se serve una maggior quantità di sistemi, occorre usare un condizionale
+@TeX{} prima di @code{\endinput}.  In questo esempio, sostituisci @q{2} col
+numero di sistemi che desideri avere nell'output.
+
+@example
+\def\betweenLilyPondSystem#1@{
+    \ifnum#1<2\else\expandafter\endinput\fi
+@}
+@end example
+
+@noindent
+(Dato che @code{\endinput} arresta immediatamente l'elaborazione del file di
+input corrente, occorre usare @code{\expandafter} per ritardare la chiamata di
+@code{\endinput} e far sì che avvenga dopo l'esecuzione di @code{\fi}, in modo
+da bilanciare la condizione @code{\if}-@code{\fi}.)
+
+Ricorda che la definizione di @code{\betweenLilyPondSystem} è
+efficace finché @TeX{} esce dal gruppo attuale (ad esempio l'ambiente
+@LaTeX{}) o è sovrascritto da un'altra definizione (che vale, in
+gran parte dei casi, per il resto del documento).  Per reimpostare
+la definizione, si scrive
+
+@example
+\let\betweenLilyPondSystem\undefined
+@end example
+
+@noindent
+nel sorgente @LaTeX{}.
+
+Si potrebbe semplificare la procedura creando una macro @TeX{}
+
+@example
+\def\onlyFirstNSystems#1@{
+    \def\betweenLilyPondSystem##1@{%
+      \ifnum##1<#1\else\expandafter\endinput\fi@}
+@}
+@end example
+
+@noindent
+e poi specificando prima di ogni frammento la quantità di sistemi desiderata,
+
+@example
+\onlyFirstNSystems@{3@}
+\begin@{lilypond@}...\end@{lilypond@}
+\onlyFirstNSystems@{1@}
+\begin@{lilypond@}...\end@{lilypond@}
+@end example
+
+
+@seealso
+Esistono opzioni specifiche da linea di comando per @command{lilypond-book} e
+altri dettagli da conoscere quando si elaborano documenti @LaTeX{}; si veda
+@ref{Invoking lilypond-book}.
+
+
+@node Texinfo
+@subsection Texinfo
+@translationof Texinfo
+
+Texinfo è il formato standard per la documentazione del progetto GNU.  Un
+esempio di documento Texinfo è questo stesso manuale.  Le versioni del manuale
+in formato HTML, PDF e Info vengono generate da un documento Texinfo.
+
+Nel file di input, la musica viene indicata con
+
+@example
+@@lilypond[options,go,here]
+  IL TUO CODICE LILYPOND
+@@end lilypond
+@end example
+
+@noindent
+oppure
+
+@example
+@@lilypond[le,opzioni,vanno,qui]@{ IL TUO CODICE LILYPOND @}
+@end example
+
+@noindent
+oppure
+
+@example
+@@lilypondfile[le,opzioni,vanno,qui]@{@var{nomefile}@}
+@end example
+
+Inoltre, @code{@@lilypondversion} mostra la versione di
+lilypond impiegata.
+
+Quando si esegue @command{lilypond-book} su di esso, il risultato è un
+file Texinfo (con estensione @file{.texi}) contenente degli elementi @code{@@image}
+per l'HTML, Info e l'output per la stampa.  @command{lilypond-book} genera le
+immagini della musica in formati EPS e PDF per l'utilizzo nell'output per la
+stampa e in formato PNG per l'utilizzo nell'output HTML e Info.
+
+Vediamo due piccoli esempi.  Un ambiente @code{lilypond}
+
+@example
+@@lilypond[fragment]
+c' d' e' f' g'2 g'
+@@end lilypond
+@end example
+
+@noindent
+genera
+
+@lilypond[fragment]
+c' d' e' f' g'2 g'
+@end lilypond
+
+La versione breve
+
+@example
+@@lilypond[fragment,staffsize=11]@{<c' e' g'>@}
+@end example
+
+@noindent
+genera
+
+@lilypond[fragment,staffsize=11]{<c' e' g'>}
+
+Diversamente da @LaTeX{}, @code{@@lilypond@{...@}} non genera un'immagine
+nel testo.  Prende sempre un paragrafo proprio.
+
+
+@node HTML
+@subsection HTML
+@translationof HTML
+
+La musica si inserisce in questo modo
+
+@example
+<lilypond fragment relative=2>
+\key c \minor c4 es g2
+</lilypond>
+@end example
+
+@noindent
+@command{lilypond-book} genera quindi un file HTML con gli elementi appropriati
+per le immagini dei frammenti musicali:
+
+@lilypond[fragment,relative=2]
+\key c \minor c4 es g2
+@end lilypond
+
+Per le immagini in linea, si usa @code{<lilypond ... />}, dove le opzioni
+sono distinte dalla musica attraverso i due punti, ad esempio
+
+@example
+Un po' di musica in <lilypond relative=2: a b c/> una linea di testo.
+@end example
+
+Per includere file separati, si usa
+
+@example
+<lilypondfile @var{option1} @var{option2} ...>@var{filename}</lilypondfile>
+@end example
+
+Per una lista di opzioni da usare con gli elementi @code{lilypond} e
+@code{lilypondfile}, si veda @ref{Music fragment options}.
+
+Inoltre, @code{<lilypondversion/>} mostra la versione di
+lilypond impiegata.
+
+
+@cindex titoli in HTML
+@cindex immagine di anteprima
+@cindex miniatura
+
+@node DocBook
+@subsection DocBook
+@translationof DocBook
+
+Per inserire frammenti di codice LilyPond è una buona idea mantenere la
+conformità del documento DocBook, in modo da poter usare gli editor DocBook, la
+validazione, etc.  Quindi non si usano elementi personalizzati, ma si
+specifica una convenzione basata sugli elementi DocBook standard.
+
+@subheading Convenzioni comuni
+
+Per inserire un frammento di qualsiasi tipo si usano gli elementi @code{mediaobject}
+e @code{inlinemediaobject}, in modo che il frammento possa essere formattato
+in linea o meno.  Le opzioni di formattazione del frammento vengono sempre
+indicate nella proprietà @code{role} dell'elemento più interno (si vedano
+le prossime sezioni).  Gli elementi sono scelti in modo da permettere agli editor
+DocBook di ottenere una formattazione ottimale.  I file DocBook da
+elaborare con @command{lilypond-book} devono avere estensione @file{.lyxml}.
+
+@subheading Includere un file LilyPond
+
+Si tratta del caso più semplice.  Bisogna usare l'estensione @file{.ly} per
+il file da includere e inserirlo come uno standard @code{imageobject}, con
+la seguente struttura:
+
+@example
+<mediaobject>
+  <imageobject>
+    <imagedata fileref="music1.ly" role="printfilename" />
+  </imageobject>
+</mediaobject>
+@end example
+
+Nota che sei libero di usare @code{mediaobject} o @code{inlinemediaobject}
+come elemento più esterno.
+
+@subheading Includere codice LilyPond
+
+È possibile includere codice LilyPond all'interno di un elemento
+@code{programlisting} in cui il linguaggio sia impostato su @code{lilypond}
+e con la seguente struttura:
+
+@example
+<inlinemediaobject>
+  <textobject>
+    <programlisting language="lilypond" role="fragment verbatim staffsize=16 ragged-right relative=2">
+\context Staff \with @{
+  \remove Time_signature_engraver
+  \remove Clef_engraver@}
+  @{ c4( fis) @}
+    </programlisting>
+  </textobject>
+</inlinemediaobject>
+@end example
+
+Come si vede, l'elemento più esterno è @code{mediaobject} o
+@code{inlinemediaobject} e c'è un @code{textobject} che contiene al
+suo interno il @code{programlisting}.
+
+@subheading Elaborare il documento DocBook
+
+L'esecuzione di @command{lilypond-book} su un file @file{.lyxml} creerà un
+documento DocBook valido con estensione @file{.xml} che potrà essere
+ulteriormente elaborato.  Usando
+@uref{http://@/dblatex@/.sourceforge@/.net@/,dblatex}, creerà automaticamente un file
+PDF da questo documento.  Per generare l'HTML (HTML Help,
+JavaHelp etc.) si possono usare i fogli di stile DocBook XSL ufficiali;
+tuttavia è possibile che sia necessario modificarli un po'.
+
+
+@node Opzioni dei frammenti musicali
+@section Opzioni dei frammenti musicali
+@translationof Music fragment options
+
+Nelle pagine che seguono, per @q{comando LilyPond} si intende un qualsiasi
+comando descritto nelle sezioni precedenti che sia gestito da @command{lilypond-book}
+per produrre un frammento musicale.  Per semplicità, i comandi LilyPond vengono
+mostrati soltanto nella sintassi @LaTeX{}.
+
+Nota che la stringa delle opzioni è analizzata da sinistra a destra; se un'opzione
+ricorre più di una volta, viene applicata nella sua ultima occorrenza.
+
+Sono disponibili le seguenti opzioni per i comandi LilyPond:
+
+@table @code
+@item staffsize=@var{altezza}
+Imposta la dimensione del pentagramma a @var{altezza}, misurata in punti.
+
+@item ragged-right
+Produce linee con margine destro irregolare e spaziatura naturale, ovvero
+viene aggiunto @code{ragged-right = ##t} al frammento LilyPond.  Questa è
+l'impostazione predefinita per il comando @code{\lilypond@{@}} se non è presente
+un'opzione @code{line-width}.  È anche l'impostazione predefinita per l'ambiente
+@code{lilypond} se viene usata l'opzione @code{fragment} senza specificare
+esplicitamente la larghezza della linea.
+
+@item noragged-right
+Per i frammenti di una sola linea, fa sì che la lunghezza del rigo venga estesa
+fino a coincidere con la larghezza della linea, ovvero viene aggiunto
+@code{ragged-right = ##f} al frammento LilyPond.
+
+@item line-width
+@itemx line-width=@var{dimensione}\@var{unità}
+Imposta la lunghezza della linea a @var{dimensione}, usando @var{unità} come
+unità di misura.  @var{unità} può essere una delle seguenti stringhe: @code{cm},
+@code{mm}, @code{in} o @code{pt}.  Questa opzione riguarda l'output LilyPond
+(ovvero, la lunghezza del rigo del frammento musicale), non la formattazione
+del testo.
+
+Se usato senza un argomento, imposta la lunghezza della linea a un valore
+predefinito (calcolato da un algoritmo euristico).
+
+Se non viene assegnata un'opzione @code{line-width}, @command{lilypond-book}
+cerca di indovinare un valore predefinito per gli ambienti @code{lilypond} che
+non usano l'opzione @code{ragged-right}.
+
+@item papersize=@var{stringa}
+Dove @var{stringa} è una delle dimensioni del foglio definite in @file{scm/paper.scm},
+ad esempio @code{a5}, @code{quarto}, @code{11x17} etc.
+
+I valori non definiti in @file{scm/paper.scm} saranno ignorati, sarà inviato
+un messaggio di avviso e al frammento sarà assegnata la dimensione predefinita,
+ovvero @code{a4}.
+
+@item notime
+Non viene visualizzata l'indicazione di tempo e disabilita i segni relativi alla scansione ritmica
+(segno di tempo, barre di divisione) nella partitura.
+
+@item fragment
+Fa sì che @command{lilypond-book} aggiunga del codice boilerplate in modo che
+sia possibile inserire semplicemente, ad esempio,
+
+@example
+c'4
+@end example
+
+@noindent
+senza @code{\layout}, @code{\score}, etc.
+
+@item nofragment
+Non aggiunge del codice ulteriore per completare il codice LilyPond nei frammenti
+musicali.  Essendo l'impostazione predefinita, @code{nofragment} di norma
+è ridondante.
+
+@item indent=@var{dimensione}\@var{unità}
+Imposta l'indentazione del primo sistema musicale a @var{dimensione}, usando
+@var{unità} come unità di misura.  @var{unità} è una delle seguenti stringhe:
+@code{cm}, @code{mm}, @code{in} o @code{pt}.  Questa opzione riguarda
+LilyPond, non la formattazione del testo.
+
+@item noindent
+Imposta l'indentazione del primo sistema musicale su zero.  Questa opzione
+interessa LilyPond, non la formattazione del testo.  L'assenza di indentazione è
+l'impostazione predefinita, dunque normalmente @code{noindent} è ridondante.
+
+@item quote
+Riduce la lunghezza della linea di un frammento musicale di @math{2*0.4}@dmn{in}
+e inserisce l'output in un blocco per le citazioni.  Il valore @q{0.4@dmn{in}}
+può essere controllato con l'opzione @code{exampleindent}.
+
+@item exampleindent
+Imposta la quantità di spazio con cui l'opzione @code{quote} indenta un
+frammento musicale.
+
+@item relative
+@itemx relative=@var{n}
+Usa la modalità di ottava relativa.  Per impostazione predefinita, le altezze delle note
+sono riferite al Do@tie{}centrale.  L'argomento opzionale del numero intero
+specifica l'ottava della nota iniziale: il valore predefinito @code{1} è il
+Do centrale.  L'opzione @code{relative} funziona solo quando è impostata
+l'opzione @code{fragment}, quindi @code{fragment} è implicitamente sottinteso
+da @code{relative}, a prescindere dalla presenza dell'opzione @code{(no)fragment}
+nel sorgente.
+@end table
+
+LilyPond usa @command{lilypond-book} anche per produrre la propria
+documentazione.  A questo scopo, esistono altre opzioni più complesse
+per i frammenti musicali.
+
+@table @code
+@item verbatim
+L'argomento di un comando LilyPond viene copiato nel file di output e racchiuso
+in un blocco di testo, seguito da qualsiasi testo assegnato con l'opzione
+@code{intertext} (non ancora implementato); quindi viene mostrata la musica
+vera e propria.  Questa opzione non funziona bene con @code{\lilypond@{@}} se
+fa parte di un paragrafo.
+
+Se @code{verbatim} viene usato in un comando @code{lilypondfile}, è possibile
+includere il testo di una parte soltanto del file sorgente.  Se il file
+sorgente ha un commento contenente @samp{begin verbatim} (senza
+virgolette), la citazione del sorgente nel blocco testuale inizierà dopo
+l'ultima occorrenza di tale commento; in modo analogo, la citazione del testo
+sorgente si fermerà proprio prima della prima occorrenza di un commento
+contenente @samp{end verbatim}, se presente.  Nel seguente file sorgente di
+esempio, la musica viene interpretata in modalità relativa ma il blocco
+testuale non mostrerà il blocco @code{relative}, ovvero
+
+@example
+\relative c' @{ % begin verbatim
+  c4 e2 g4
+  f2 e % end verbatim
+@}
+@end example
+
+@noindent
+mostrerà il seguente blocco testuale
+
+@example
+  c4 e2 g4
+  f2 e
+@end example
+
+@noindent
+Se si desidera tradurre i commenti e i nomi delle variabili nell'output
+verbatim ma non nei sorgenti, si può impostare la variabile d'ambiente
+@code{LYDOC_LOCALEDIR} sul percorso di una directory; la directory deve
+contenere un albero dei cataloghi di messaggio @file{.mo} che hanno
+@code{lilypond-doc} come dominio.
+
+@item addversion
+(Solo per l'output Texinfo.)  Aggiunge @code{\version
+@@w@{"@@version@{@}"@}} nella prima riga dell'output di @code{verbatim}.
+
+@item texidoc
+(Solo per l'output Texinfo.)  Se @command{lilypond} viene lanciato con
+l'opzione @option{--header=@/texidoc} e il file da elaborare si
+chiama @file{foo.ly}, verrà creato un file @file{foo.texidoc} a patto che
+ci sia un campo @code{texidoc} nel blocco @code{\header}.  L'opzione @code{texidoc}
+fa sì che @command{lilypond-book} includa tali file, aggiungendo il loro
+contenuto in forma di blocco di documentazione proprio prima del frammento
+di musica.
+
+Se il file @file{foo.ly} contiene
+
+@example
+\header @{
+  texidoc = "Questo file mostra il funzionamento di una singola nota."
+@}
+@{ c'4 @}
+@end example
+
+@noindent
+e il documento Texinfo @file{test.texinfo} contiene
+
+@example
+@@lilypondfile[texidoc]@{foo.ly@}
+@end example
+
+@noindent
+il seguente comando produce il risultato atteso
+
+@example
+lilypond-book --pdf --process="lilypond \
+  -dbackend=eps --header=texidoc" test.texinfo
+@end example
+
+Per la maggior parte, i documenti di test di LilyPond (nella directory @file{input}
+della distribuzione) sono piccoli file @file{.ly} che hanno esattamente questo
+aspetto.
+
+Ai fini della localizzazione, se il documento Texinfo document contiene
+@code{@@documentlanguage @var{LANG}} e l'header di @file{foo.ly}
+contiene un campo @code{texidoc@var{LANG}}, quando si lancia @command{lilypond}
+con l'opzione @option{--header=@/texidoc@var{LANG}} verrà incluso
+@file{foo.texidoc@var{LANG}} invece di @file{foo.texidoc}.
+
+@item lilyquote
+(Solo per l'output Texinfo.)  Questa opzione è simile alla citazione, ma solo
+il frammento musicale (e l'opzionale blocco di testo sottinteso dall'opzione
+@code{verbatim}) vengono inseriti in un blocco di citazione.  Questa opzione è
+utile se si vuole citare (@code{quote}) il frammento musicale ma non il
+blocco della documentazione @code{texidoc}.
+
+@item doctitle
+(Solo per l'output Texinfo.) Questa opzione funziona in modo simile
+all'opzione @code{texidoc}: se @command{lilypond} viene lanciato con
+l'opzione @option{--header=@/doctitle} e il file da elaborare si chiama
+@file{foo.ly} e contiene un campo @code{doctitle} nel blocco
+@code{\header}, viene creato un file @file{foo.doctitle}.  Se si usa
+l'opzione @code{doctitle}, i contenuti di @file{foo.doctitle},
+che dovrebbero trovarsi su una singola linea di @var{text}, vengono inseriti
+nel documento Texinfo come @code{@@lydoctitle @var{text}}.
+@code{@@lydoctitle} è una macro definita nel documento Texinfo.
+Lo stesso discorso relativo all'elaborazione @code{texidoc} delle lingue
+localizzate si applica anche a @code{doctitle}.
+
+@item nogettext
+(Solo per l'output Texinfo.) Non tradurre i commenti e i nomi delle
+variabili nel blocco testuale del frammento citato.
+
+@item printfilename
+Se un file di input di LilyPond viene incluso con @code{\lilypondfile}, il
+nome del file viene mostrato immediatamente prima del frammento musicale.  Per l'output
+HTML, questo nome è un collegamento.  Viene mostrata solo la base del nome del
+file, ovvero viene tolta la parte che costituisce il percorso del file.
+
+@end table
+
+
+@node Utilizzo di lilypond-book
+@section Utilizzo di @command{lilypond-book}
+@translationof Invoking lilypond-book
+
+@command{lilypond-book} crea un file con una delle seguenti
+estensioni: @file{.tex}, @file{.texi}, @file{.html} o @file{.xml},
+a seconda del formato dell'output.  Tutti i file @file{.tex}, @file{.texi} e
+@file{.xml} necessitano di un'ulteriore elaborazione.
+
+@subheading Istruzioni specifiche di ogni formato
+
+@subsubheading @LaTeX{}
+
+Esistono due modi di elaborare il documento @LaTeX{} per la stampa o la
+pubblicazione: generare direttamente un file PDF tramite PDF@LaTeX{} oppure
+generare un file PostScript tramite @LaTeX{}, attraverso un traduttore da DVI a
+PostScript come @command{dvips}.  Il primo modo è più semplice e raccomandato@footnote{Nota
+che PDF@LaTeX{} e @LaTeX{} potrebbero non essere entrambi utilizzabili per compilare
+un qualsiasi documento @LaTeX{}: ecco perché vengono illustrati i due modi.}, e
+indipendentemente da quello che userai, puoi convertire facilmente PostScript e
+PDF con strumenti come @command{ps2pdf} e @command{pdf2ps} inclusi nel pacchetto
+Ghostscript.
+
+Per creare un file PDF con PDF@LaTeX{}, si usa
+
+@example
+lilypond-book --pdf tuofile.lytex
+pdflatex tuofile.tex
+@end example
+
+@cindex caratteri vettoriali
+@cindex type1, carattere
+@cindex dvips
+@cindex utilizzo di dvips
+Per produrre l'output PDF attraverso @LaTeX{}/@command{dvips}/@command{ps2pdf},
+bisogna usare questi comandi
+
+@example
+lilypond-book tuofile.lytex
+latex tuofile.tex
+dvips -Ppdf tuofile.dvi
+ps2pdf tuofile.ps
+@end example
+
+@noindent
+Il file @file{.dvi} creato da questa sequenza non conterrà le
+teste delle note.  È normale; se si seguono le istruzioni, le teste
+verranno incluse nei file @file{.ps} e @file{.pdf}.
+
+L'esecuzione di @command{dvips} potrebbe generare dei messaggi di avviso
+relativi ai caratteri; questi messaggi sono innocui e possono
+essere ignorati.  Se esegui @command{latex} in modalità due colonne, ricorda
+di aggiungere @code{-t landscape} alle opzioni di @command{dvips}.
+
+@subsubheading Texinfo
+
+Per generare un documento Texinfo (in qualsiasi formato di output), si seguono
+le normali procedure usate con Texinfo; ovvero, si lancia @command{texi2pdf} o
+@command{texi2dvi} o @command{makeinfo}, a seconda del formato di output
+che si vuole creare.
+@ifinfo
+@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, e @ref{Creating
+an Info File, , , texinfo, GNU Texinfo}.
+@end ifinfo
+@ifnotinfo
+Si veda la documentazione di Texinfo per ulteriori dettagli.
+@end ifnotinfo
+
+
+@subheading Opzioni da linea di comando
+
+@command{lilypond-book} accetta le seguenti opzioni da linea di comando:
+
+@table @code
+@item -f @var{formato}
+@itemx --format=@var{formato}
+Specifica il tipo di documento da elaborare: @code{html}, @code{latex},
+@code{texi} (il formato predefinito) o @code{docbook}.  Se manca questa opzione,
+@command{lilypond-book} cerca di rilevare il formato automaticamente, si veda
+@ref{Filename extensions}.  Attualmente, @code{texi} è equivalente a
+@code{texi-html}.
+
+@c This complicated detail is not implemented, comment it out -jm
+@ignore
+The @code{texi} document type produces a Texinfo file with music
+fragments in the printed output only.  For getting images in the HTML
+version, the format @code{texi-html} must be used instead.
+@end ignore
+
+@item -F @var{filtro}
+@itemx --filter=@var{filtro}
+Convoglia i frammenti attraverso il @var{filtro}.  @code{lilypond-book} non
+esegue contemporaneamente il filtro e l'elaborazione.  Ad esempio,
+
+@example
+lilypond-book --filter='convert-ly --from=2.0.0 -' mio-libro.tely
+@end example
+
+@item -h
+@itemx --help
+Mostra un breve messaggio di aiuto.
+
+@item -I @var{dir}
+@itemx --include=@var{dir}
+Aggiunge @var{dir} al percorso di inclusione.  @command{lilypond-book} cerca
+anche dei frammenti già compilati nel percorso di inclusione e non li riscrive
+nella directory di output, quindi in alcuni casi è necessario eseguire
+ulteriori comandi come @command{makeinfo} o @command{latex} con le stesse
+opzioni @code{-I @var{dir}}.
+
+@item -o @var{dir}
+@itemx --output=@var{dir}
+Salva i file generati nella directory @var{dir}.  L'esecuzione di
+@command{lilypond-book} genera tanti piccoli file che LilyPond
+elaborerà.  Per evitare tutto questo disordine nella directory dei
+sorgenti, si usa l'opzione da linea di comando @option{--output}
+e si entra in questa directory prima di eseguire @command{latex}
+o @command{makeinfo}.
+
+@example
+lilypond-book --output=out tuofile.lytex
+cd out
+...
+@end example
+
+@itemx --skip-lily-check
+Non si arresta se non viene trovato l'output di lilypond.  Viene usata per la
+documentazione Info di LilyPond, che è priva di immagini.
+
+@itemx --skip-png-check
+Non si arresta se non vengono trovate immagini PNG per i file EPS.  Viene usata
+per la documentazione Info di LilyPond, che è priva di immagini.
+
+@itemx --lily-output-dir=@var{dir}
+Scrive i file lily-XXX nella directory @var{dir}, crea un link nella
+directory @code{--output}.  Si usa questa opzione per risparmiare tempo nella
+compilazione di documenti situati in directory diverse che condividono
+molti identici frammenti.
+
+@itemx --info-images-dir=@var{dir}
+Formatta l'output di Texinfo in modo che Info cerchi le immagini della musica
+in @var{dir}.
+
+@itemx --latex-program=@var{prog}
+Lancia l'eseguibile @command{prog} invece di @command{latex}.  Questa opzione
+è utile, ad esempio, se il documento è elaborato con @command{xelatex}.
+
+@itemx --left-padding=@var{quantità}
+Crea una spaziatura corrispondente a questa quantità tra i riquadri EPS.  @var{quantità} è
+misurata in millimetri e il valore predefinito è 3.0.  Questa opzione si usa
+se i righi dello spartito oltrepassano il margine destro.
+
+La larghezza di un sistema molto denso può variare in base agli elementi
+della notazione attaccati al margine sinistro, come i numeri di battuta e
+i nomi degli strumenti.  Questa opzione accorcia tutte le linee e le sposta a
+a destra della stessa quantità.
+
+@item -P @var{comando}
+@itemx --process=@var{comando}
+Elabora i frammenti di LilyPond con @var{comando}.  Il comando predefinito è
+@code{lilypond}.  @code{lilypond-book} non userà @code{--filter} e
+@code{--process} contemporaneamente.
+
+@item --pdf
+Crea file PDF da usare con PDF@LaTeX{}.
+
+@itemx --use-source-file-names
+Salva i file di output dei frammenti con lo stesso nome, esclusa l'estensione,
+dei sorgenti.  Questa opzione funziona solo con i frammenti inclusi con
+@code{lilypondfile} e solo se le directory indicate da @code{--output-dir} e
+@code{--lily-output-dir} sono diverse.
+
+@item -V
+@itemx --verbose
+Mostra un output dettagliato.
+
+@item -v
+@itemx --version
+Mostra informazioni sulla versione.
+@end table
+
+@knownissues
+
+Il comando Texinfo @code{@@pagesizes} non viene inrerpretato.  Allo stesso
+modo, i comandi @LaTeX{} che modificano i margini e la larghezza della linea
+dopo il preambolo vengono ignorati.
+
+Solo il primo @code{\score} di un blocco LilyPond viene elaborato.
+
+
+@node Estensioni dei nomi di file
+@section Estensioni dei nomi di file
+@translationof Filename extensions
+
+Si può usare qualsiasi estensione per il file di input, ma se non si usa
+l'estensione raccomandata per uno specifico formato potrebbe essere
+necessario specificare a mano il formato di output; per i dettagli si veda
+@ref{Invoking lilypond-book}.  Altrimenti, @command{lilypond-book} sceglie
+automaticamente il formato di output in base all'estensione del file di input.
+
+@quotation
+@multitable @columnfractions .2 .5
+@item @strong{estensione} @tab @strong{formato di output}
+@item
+@item @file{.html} @tab HTML
+@item @file{.htmly} @tab HTML
+@item @file{.itely} @tab Texinfo
+@item @file{.latex} @tab @LaTeX{}
+@item @file{.lytex} @tab @LaTeX{}
+@item @file{.lyxml} @tab DocBook
+@item @file{.tely} @tab Texinfo
+@item @file{.tex} @tab @LaTeX{}
+@item @file{.texi} @tab Texinfo
+@item @file{.texinfo} @tab Texinfo
+@item @file{.xml} @tab HTML
+@end multitable
+@end quotation
+
+Se si usa per il file di input la stessa estensione che @command{lilypond-book}
+usa per il file di output e se il file di input è nella stessa directory
+in cui lavora @command{lilypond-book}, bisogna usare l'opzione @code{--output}
+per far sì che @command{lilypond-book} sia eseguito; altrimenti si ferma e
+mostra un messaggio di errore simile a @qq{L'output sovrascriverebbe il file di input}.
+
+
+@node Modelli per lilypond-book
+@section Modelli per lilypond-book
+@translationof lilypond-book templates
+
+Ecco alcuni modelli da usare con @code{lilypond-book}.  Se non hai familiarità
+con questo programma, consulta @ref{lilypond-book}.
+
+@subsection LaTeX
+
+Si possono includere frammenti LilyPond in un documento LaTeX.
+
+@example
+\documentclass[]@{article@}
+
+\begin@{document@}
+
+Normale testo LaTeX.
+
+\begin@{lilypond@}
+\relative c'' @{
+  a4 b c d
+@}
+\end@{lilypond@}
+
+Altro testo LaTeX, seguito da alcune opzioni tra parentesi quadre.
+
+\begin@{lilypond@}[fragment,relative=2,quote,staffsize=26,verbatim]
+d4 c b a
+\end@{lilypond@}
+\end@{document@}
+@end example
+
+@subsection Texinfo
+
+Si possono includere frammenti LilyPond in Texinfo; infatti questo intero
+manuale è scritto in Texinfo.
+
+@example
+\input texinfo @c -*-texinfo-*-
+@@node Top
+@@top
+
+Testo Texinfo
+
+@@lilypond
+\relative c' @{
+  a4 b c d
+@}
+@@end lilypond
+
+Altro testo Texinfo, seguito dalle opzioni tra parentesi.
+
+@@lilypond[verbatim,fragment,ragged-right]
+d4 c b a
+@@end lilypond
+
+@@bye
+@end example
+
+
+@subsection html
+
+@example
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- header_tag -->
+<HTML>
+<body>
+
+<p>
+I documenti per lilypond-book possono combinare liberamente musica e testo.  Ad
+esempio,
+<lilypond>
+\relative c'' @{
+  a4 b c d
+@}
+</lilypond>
+</p>
+
+<p>
+Ancora un po' di Lilypond, questa volta con delle opzioni:
+
+<lilypond fragment quote staffsize=26 verbatim>
+a4 b c d
+</lilypond>
+</p>
+
+</body>
+</html>
+
+
+@end example
+
+@subsection xelatex
+
+@verbatim
+\documentclass{article}
+\usepackage{ifxetex}
+\ifxetex
+%elementi specifici di xetex
+\usepackage{xunicode,fontspec,xltxtra}
+\setmainfont[Numbers=OldStyle]{Times New Roman}
+\setsansfont{Arial}
+\else
+%Questo può essere lasciato vuoto se non si usa pdftex
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{mathptmx}%Times
+\usepackage{helvet}%Helvetica
+\fi
+%Qui è possibile inserire tutti i pacchetti inclusi anche in pdftex
+\usepackage[ngerman,finnish,english]{babel}
+\usepackage{graphicx}
+
+\begin{document}
+\title{Un breve documento con LilyPond e xelatex}
+\maketitle
+
+I comandi abituali di \textbf{font} interni al \emph{testo} funzionano,
+perché \textsf{sono supportati da \LaTeX{} e XeteX.}
+Se vuoi usare comandi specifici come \verb+\XeTeX+, devi
+includerli nuovamente in un ambiente \verb+\ifxetex+.
+You can use this to print the \ifxetex \XeTeX{} command \else
+XeTeX command \fi which is not known to normal \LaTeX .
+
+Nel testo normale si possono usare semplicemente i comandi LilyPond, come in
+questo esempio:
+
+\begin{lilypond}
+{a2 b c'8 c' c' c'}
+\end{lilypond}
+
+\noindent
+e così via.
+
+I tipi di carattere dei frammenti inseriti con LilyPond devono essere impostati
+all'interno dei frammenti stessi.  Si legga il manuale di Uso dell'applicazione per
+sapere come usare lilypond-book.
+
+\selectlanguage{ngerman}
+Auch Umlaute funktionieren ohne die \LaTeX -Befehle, wie auch alle
+anderen
+seltsamen Zeichen: __ ______, wenn sie von der Schriftart
+unterst__tzt werden.
+\end{document}
+@end verbatim
+
+
+@node Condividere l'indice
+@section Condividere l'indice
+@translationof Sharing the table of contents
+
+Queste funzioni sono già incluse nel pacchetto OrchestralLily:
+
+@example
+@url{http://repo.or.cz/w/orchestrallily.git}
+@end example
+
+Alcuni utenti
+preferiscono esportare l'indice da lilypond e leggerlo da dentro
+@LaTeX{} per la sua maggiore flessibilità nella gestione del testo.
+
+@subsubheading Esportare l'indice da LilyPond
+
+Per questo esempio si presume che lo spartito abbia vari movimenti nello stesso file
+di output di lilypond.
+
+@smallexample
+#(define (oly:create-toc-file layout pages)
+  (let* ((label-table (ly:output-def-lookup layout 'label-page-table)))
+    (if (not (null? label-table))
+      (let* ((format-line (lambda (toc-item)
+             (let* ((label (car toc-item))
+                    (text  (caddr toc-item))
+                    (label-page (and (list? label-table)
+                                     (assoc label label-table)))
+                    (page (and label-page (cdr label-page))))
+               (format #f "~a, section, 1, @{~a@}, ~a" page text label))))
+             (formatted-toc-items (map format-line (toc-items)))
+             (whole-string (string-join formatted-toc-items ",\n"))
+             (output-name (ly:parser-output-name parser))
+             (outfilename (format "~a.toc" output-name))
+             (outfile (open-output-file outfilename)))
+        (if (output-port? outfile)
+            (display whole-string outfile)
+            (ly:warning (_ "Unable to open output file ~a for the TOC information") outfilename))
+        (close-output-port outfile)))))
+
+\paper @{
+  #(define (page-post-process layout pages) (oly:create-toc-file layout pages))
+@}
+@end smallexample
+
+@subsubheading Importare l'indice in LaTeX
+
+In LaTeX l'intestazione deve includere:
+
+@c no, this doesn't require the smallexample, but since the other
+@c two blocks on this page use it, I figured I might as well
+@c user it here as well, for consistency. -gp
+@smallexample
+\usepackage@{pdfpages@}
+\includescore@{nameofthescore@}
+@end smallexample
+
+@noindent
+dove @code{\includescore} viene definito in questo modo:
+
+@smallexample
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \includescore@{PossibleExtension@}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Read in the TOC entries for a PDF file from the corresponding .toc file.
+% This requires some heave latex tweaking, since reading in things from a file
+% and inserting it into the arguments of a macro is not (easily) possible
+
+% Solution by Patrick Fimml on #latex on April 18, 2009:
+% \readfile@{filename@}@{\variable@}
+% reads in the contents of the file into \variable (undefined if file
+% doesn't exist)
+\newread\readfile@@f
+\def\readfile@@line#1@{%
+@{\catcode`\^^M=10\global\read\readfile@@f to \readfile@@tmp@}%
+\edef\do@{\noexpand\g@@addto@@macro@{\noexpand#1@}@{\readfile@@tmp@}@}\do%
+\ifeof\readfile@@f\else%
+\readfile@@line@{#1@}%
+\fi%
+@}
+\def\readfile#1#2@{%
+\openin\readfile@@f=#1 %
+\ifeof\readfile@@f%
+\typeout@{No TOC file #1 available!@}%
+\else%
+\gdef#2@{@}%
+\readfile@@line@{#2@}%
+\fi
+\closein\readfile@@f%
+@}%
+
+
+\newcommand@{\includescore@}[1]@{
+\def\oly@@fname@{\oly@@basename\@@ifmtarg@{#1@}@{@}@{_#1@}@}
+\let\oly@@addtotoc\undefined
+\readfile@{\oly@@xxxxxxxxx@}@{\oly@@addtotoc@}
+\ifx\oly@@addtotoc\undefined
+\includepdf[pages=-]@{\oly@@fname@}
+\else
+\edef\includeit@{\noexpand\includepdf[pages=-,addtotoc=@{\oly@@addtotoc@}]
+@{\oly@@fname@}@}\includeit
+\fi
+@}
+@end smallexample
+
+
+@node Metodi alternativi per combinare testo e musica
+@section Metodi alternativi per combinare testo e musica
+@translationof Alternate methods of mixing text and music
+
+Altri modi per combinare testo e musica (senza usare
+@command{lilypond-book}) sono trattati in
+@ref{LilyPond output in other programs}.
+
+
index 2aed9bf5bdca824d825646d109c8e3f98d04a540..f8ab1625843e454c395f974d6298b1cc17975bdf 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 
 @ignore
-    Translation of GIT committish: cff226053d927e433473697fe743bdfd721d2607
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -55,14 +55,14 @@ obiettivi di questo manuale; si prega di consultare altra documentazione su
 questo argomento se non si conosce la linea di comando.
 
 @menu
-* Invocare lilypond::
+* Utilizzo di lilypond::
 * Opzioni della linea di comando per lilypond::
 * Variabili d'ambiente::
 * LilyPond in una gabbia chroot::
 @end menu
 
-@node Invocare lilypond
-@unnumberedsubsec Invocare @command{lilypond}
+@node Utilizzo di lilypond
+@unnumberedsubsec Utilizzo di @command{lilypond}
 @translationof Invoking lilypond
 
 L'eseguibile @command{lilypond} può essere lanciato dalla linea di comando
@@ -128,7 +128,7 @@ e non hanno niente a che fare con lilypond.
 @unnumberedsubsec Opzioni della linea di comando per @command{lilypond}
 @translationof Command line options for lilypond
 
-@cindex Invocare @command{lilypond}
+@cindex Utilizzo di @command{lilypond}
 @cindex opzioni della linea di comando per @command{lilypond}
 @cindex linea di comando, opzioni di
 @cindex switches
index 0dbd0458a7131c825df6860e0de4176d774bc743..5b1c967632b9390ba86fac973c291e12e003545e 100644 (file)
@@ -1,7 +1,7 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 
 @ignore
-    Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
 @translationof Suggestions for writing files
 
 Ora puoi iniziare a scrivere file di input di LilyPond più grandi --
-non più i piccoli esempi del tutorial, ma brani completi.
+non più i piccoli esempi del tutorial, ma pezzi completi.
 Ma qual è il modo migliore di farlo?
 
 Finché LilyPond comprende i file di input e produce l'output che
 desideri, non importa quale aspetto abbiano i file di input.  Tuttavia,
-ci sono altre questioni da tenere a mente quando si scrivono
+ci sono altri aspetti da tenere a mente quando si scrivono
 file di input di LilyPond.
 
 @itemize
-@item Se fai un errore?  La struttura di un file LilyPond può rendere
-l'individuazione di certi errori più facile (o più difficile).
-
-@item Se vuoi inviare i tuoi file di input a qualcuno?  E se vuoi modificare
-i tuoi file di input dopo qualche anno?  Alcuni file di input di LilyPond sono
-comprensibili a prima vista; altri ti possono lasciare perplesso per un'ora.
-
-@item Se vuoi aggiornare il tuo file per poterlo usare
-con una versione più recente di LilyPond?  La sintassi di input cambia di
-tanto in tanto mentre LilyPond si evolve.  Alcune modifiche possono essere
-fatte in automatico con @code{convert-ly}, ma altre potrebbero richiedere
+@item Che fare in caso di errore?  La struttura data a un file LilyPond può
+rendere l'individuazione di certi tipi di errore più facile (o più difficile).
+
+@item Che fare se vuoi inviare i tuoi file di input a qualcuno?  E se decidi di
+modificare i tuoi file di input dopo qualche anno?  Alcuni file di input di
+LilyPond sono comprensibili a prima vista; altri ti possono lasciare a grattarti
+la testa per un'ora.
+
+@item Che fare se vuoi aggiornare il tuo file per poterlo usare con una
+versione più recente di LilyPond?  Con l'evolversi di LilyPond, la sintassi di
+input si trova soggetta a occasionali cambiamenti.  Alcune modifiche possono
+essere fatte in automatico con @code{convert-ly}, ma altre potrebbero richiedere
 un intervento manuale.  I file di input di LilyPond possono essere strutturati
-per poter essere aggiornati in modo più semplice (o più difficile).
+in moda da essere poi aggiornati in modo più semplice (o più difficile).
 
 @end itemize
 
@@ -45,7 +46,7 @@ per poter essere aggiornati in modo più semplice (o più difficile).
 * Scrivere musica esistente::
 * Grandi progetti::
 * Risoluzione dei problemi::
-* Make e Makefiles::
+* Make e Makefile::
 @end menu
 
 
@@ -53,28 +54,28 @@ per poter essere aggiornati in modo più semplice (o più difficile).
 @section Consigli generali
 @translationof General suggestions
 
-Ecco alcuni consigli che possono aiutarti ad evitare o risolvere
+Ecco alcuni consigli che possono aiutarti a evitare o risolvere
 i problemi:
 
 @itemize
 @item @strong{Includi il numero di @code{\version} in ogni file}.  Nota che tutti
 i modelli contengono l'informazione su @code{\version}.  Si consiglia vivamente
 di includere sempre @code{\version}, non importa quanto piccolo possa essere
-il file.  Per esperienza personale, è piuttosto frustrante cercare di ricordare
-quale versione di LilyPond si usava alcuni anni prima.  @command{convert-ly}
+il file.  L'esperienza personale insegna come sia frustrante cercare di ricordare
+quale versione di LilyPond si usava alcuni anni prima!  @command{convert-ly}
 richiede che si dichiari la versione di LilyPond utilizzata.
 
 @item @strong{Includi i controlli}: @ruser{Bar and bar number checks},
-@ruser{Octave checks}.  Se includi i controlli ogni tanto, allora se
-fai un errore lo puoi individuare più rapidamente.  Cosa si intende per
-@q{ogni tanto}?  Dipende dalla complessità della musica.
-Se la musica è molto semplice, magari solo una o due volte.  Se la musica
-è molto complessa, ad ogni battuta.
+@ruser{Octave checks}.  Includendo i controlli ogni tanto, se fai
+un errore lo puoi individuare più rapidamente.  Cosa si intende per
+@q{ogni tanto}?  Dipende dalla complessità della musica.  Se la musica
+è molto semplice, anche solo una volta o due.  Se la musica è molto
+complessa, a ogni battuta.
 
 @item @strong{Una battuta per ogni linea di testo}.  Se c'è qualcosa di
 complicato, nella musica stessa o nell'output che desideri, di solito è
 preferibile scrivere una sola battuta per linea.  Risparmiare spazio sullo
-schermo concentrando otto battute per ogni riga non conviene affatto
+schermo concentrando otto battute per ogni riga non è affatto conveniente
 se poi devi fare il @q{debug} dei file di input.
 
 @item @strong{Inserisci dei commenti nei file di input}.  Puoi usare i numeri
@@ -83,15 +84,15 @@ di battuta (ogni tanto) o dei riferimenti ai temi musicali
 aver bisogno dei commenti mentre scrivi il brano la prima volta, ma se due
 o tre anni dopo vuoi cambiare qualcosa o se vuoi dare il sorgente a un amico,
 sarà molto più difficile capire le tue intenzioni e la struttura del file
-se non sono presenti dei commenti.
+se mancano i commenti.
 
 @item @strong{Indenta le parentesi graffe}.  Molti problemi sono causati
-da uno squilibrio nel numero di @code{@{} e @code{@}}.
+da mancata corrispondenza tra le quantità di @code{@{} e di @code{@}}.
 
 @item @strong{Esplicita le durate} all'inizio delle sezioni e delle
-variabili.  Se specifichi @code{c4 d e} all'inizio di un fraseggio
-(innvece di @code{c d e} soltanto) puoi evitare alcuni problemi
-quando riarrangi la musica successivamente.
+variabili.  Se specifichi @code{c4 d e} all'inizio di una frase
+(invece di @code{c d e} soltanto) puoi evitare l'insorgere di problemi
+al momento di rimetter mano alla musica.
 
 @item @strong{Separa le modifiche manuali (tweak)} dalle definizioni
 musicali.  Vedi @rlearning{Ridurre l’input grazie a variabili e funzioni}, e
@@ -104,14 +105,14 @@ musicali.  Vedi @rlearning{Ridurre l’input grazie a variabili e funzioni}, e
 @section Scrivere musica esistente
 @translationof Typesetting existing music
 
-Se stai scrivendo della musica da una partitura esistente (ovvero il brano
-di uno spartito già scritto),
+Se stai riportando della musica da una partitura esistente (ovvero il brano
+contenuto in uno spartito già scritto),
 
 @itemize
 
 @item Inserisci in LilyPond le note del manoscritto (la copia fisica della
 musica) un sistema alla volta (ma sempre una battuta per linea di testo),
-e controlla ogni sistema quando ne completi uno.  Puoi usare le proprietà
+e controlla ogni sistema completato.  Puoi usare le proprietà
 @code{showLastLength} o @code{showFirstLength} per velocizzare
 l'elaborazione -- vedi @ruser{Skipping corrected music}.
 
@@ -123,24 +124,25 @@ definire @code{mBreak = @{ @}} per eliminare tutte queste interruzioni di
 riga.  Così LilyPond potrà inserire le interruzioni dove ritiene stiano
 meglio.
 
-@item Quando si inserisce una parte per uno strumento traspositore in una
-variabile, si consiglia di avvolgere le note tra parentesi
+@item Quando si inserisce una parte per strumento traspositore all'interno
+di una variabile, è consigliabile racchiudere le note tra parentesi graffe
 
 @example
 \transpose c altezza-naturale @{...@}
 @end example
 
 @noindent
-(dove @code{altezza-naturale} è l'altezza dello strumento) in modo
-che la musica contenuta nella variabile sia effettivamente in Do. Puoi trasporla
-all'indietro quando la variabile viene usata, se richiesto, ma potresti non
-desiderarlo (ad esempio quando si stampa una partitura in intonazione reale,
-quando si converte una parte per trombone dalla chiave di Sol alla chiave di
-basso, etc.).  Errori nelle trasposizioni sono meno probabili se tutta la musica
-contenuta nelle variabili è ad un'altezza costante.
-
-Inoltre, trasponi sempre verso/dal Do.  Questo significa che le uniche altre
-tonalità che userai sono le altezze naturali degli strumenti - bes
+(dove @code{altezza-naturale} corrisponde all'intonazione di base dello
+strumento) così che la musica contenuta nella variabile sia effettivamente
+scritta in Do. La puoi presentare trasposta quando la variabile viene usata,
+se necessario, ma potresti non desiderarlo (ad esempio quando si stampa una
+partitura in intonazione reale, quando si traspone una parte per trombone
+dalla chiave di Sol alla chiave di basso, etc.).  Errori nelle trasposizioni
+sono meno probabili se tutta la musica contenuta nelle variabili è ad
+un'altezza costante.
+
+Inoltre, trasponi sempre in relazione al Do.  Questo significa che le uniche
+altre tonalità che userai saranno le altezze naturali degli strumenti - bes
 per una tromba in Si bemolle, aes per un clarinetto in La bemolle, etc.
 
 @end itemize
@@ -157,8 +159,8 @@ file di input diventa vitale.
 
 @item @strong{Usa una variabile per ogni voce}, con un minimo di
 struttura nella definizione.  La struttura della sezione
-@code{\score} è la parte che più probabilmente cambierà;
-la definizione di @code{violin} è molto improbabile che cambi
+@code{\score} è la parte più probabilmente soggetta a cambiamenti;
+è invece molto improbabile che la definizione di @code{violin} cambi
 in una nuova versione di LilyPond.
 
 @example
@@ -176,7 +178,7 @@ g4 c'8. e16
 @end example
 
 @item @strong{Separa le modifiche manuali (tweak) dalle definizioni musicali}.  Questo
-punto è stato menzionato prima, ma nei grandi progetti diventa di vitale
+punto è stato menzionato prima; nei grandi progetti diventa di vitale
 importanza.  Potrebbe essere necessario modificare la definizione
 di @code{fthenp}, ma si dovrebbe farlo una volta sola e senza toccare
 niente in @code{violin}.
@@ -198,19 +200,19 @@ g4\fthenp c'8. e16
 
 Prima o poi ti capiterà di scrivere un file che LilyPond non
 riesce a compilare.  I messaggi inviati da LilyPond potrebbero aiutarti
-a trovare l'errore, ma in molti casi devi fare qualche ricerca
+a trovare l'errore, ma in molti casi sarà necessario fare qualche ricerca
 per individuare l'origine del problema.
 
-Gli strumenti più potenti per questo scopo sono il commento della
+Gli strumenti più potenti a questo riguardo sono il commento della
 linea singola (indicato da @code{%}) e il commento di blocco
-(indicato da @code{%@{ ... %@}}).  Se non sai dove sta il problema,
+(indicato da @code{%@{ ... %@}}).  Se non sai dove sia il problema,
 inizia col commentare ampie parti del file di input.  Dopo aver commentato
 una sezione, prova a compilare di nuovo il file.  Se funziona, allora il
 problema deve trovarsi nella parte che hai appena commentato.  Se non
-funziona, continua a commentare il materiale finché non hai qualcosa
-che funziona.
+funziona, continua a commentare il materiale finché non ottieni un codice
+funzionante.
 
-Nel caso più estremo, potresti finire con soltanto
+Nel caso estremo, potresti finire con soltanto
 
 @example
 \score @{
@@ -226,7 +228,7 @@ Nel caso più estremo, potresti finire con soltanto
 @noindent
 (in altre parole, un file senza musica)
 
-Se accade questo, non rinunciare.  Decommenta un pezzetto -- ad esempio,
+Se dovesse succedere, non rinunciare.  Decommenta un pezzetto -- ad esempio,
 la parte di basso -- e vedi se funziona.  Se non funziona,
 allora commenta tutta la musica del basso (ma lascia
 @code{\bass} in @code{\score} non commentato).
@@ -240,52 +242,52 @@ bass = \relative c' @{
 @}
 @end example
 
-Ora inizia piano piano a decommentare la parte di
+Ora inizia a decommentare mano a mano la parte di
 @code{bass} finché non trovi la linea che causa il problema.
 
 Un'altra tecnica di debug molto utile consiste nel creare
 @rweb{Esempi minimi}.
 
 
-@node Make e Makefiles
-@section Make e Makefiles
+@node Make e Makefile
+@section Make e Makefile
 @translationof Make and Makefiles
 
-@cindex makefiles
+@cindex makefile
 @cindex make
 
 Tutte le piattaforme su cui Lilypond può essere installato supportano un
 software chiamato @code{make}.  Questo software legge un file speciale chiamato
-@code{Makefile} che definisce quali file dipendono da quali altri file e quali
-comandi bisogna dare al sistema operativo per produrre un file da un
-altro.  Ad esempio makefile può spiegare come generare
+@code{Makefile} che definisce quali file dipendono da quali altri e quali
+comandi occorra dare al sistema operativo per produrre un file da un
+altro.  Ad esempio Makefile può spiegare come generare
 @file{ballad.pdf} e @file{ballad.midi} da @file{ballad.ly} eseguendo
 Lilypond.
 
-Ci sono situazioni in cui è una buona idea creare un @code{Makefile}
+In alcune situazioni, è una buona idea creare un @code{Makefile}
 per il proprio progetto, per proprio comodo o come cortesia
-per altri che potrebbero avere accesso ai file sorgente.
+per quanti altri possano avere accesso ai file sorgente.
 Questo vale per i progetti molto ampi con tanti file inclusi e
 diverse opzioni di output (ad esempio, partitura completa, parti, partitura
-del direttore, riduzione per pianoforte, etc.), o per progetti che
+del direttore, riduzione per pianoforte, etc.) o per progetti che
 richiedono comandi difficili per la compilazione (come i progetti che
-usano @code{lilypond-book}).  Makefiles variano molto in complessità
+usano @code{lilypond-book}).  I Makefile variano molto in complessità
 e flessibilità, in base alle necessità e alle abilità degli autori.
 Il programma GNU Make è installato nelle distribuzioni GNU/Linux
 e su MacOS X ed è disponibile anche per Windows.
 
 Si veda il @strong{Manuale di GNU Make} per conoscere in dettaglio l'uso di
-@code{make}, dato che quel che segue dà solo un'idea quel che può fare.
+@code{make}, dato che quel che segue dà solo un'idea delle sue potenzialità.
 
-I comandi per definire delle regole in un makefile cambiano in base
-alla piattaforma; ad esempio le varie forme di Linux e
+I comandi per definire delle regole in un Makefile cambiano in base
+alla piattaforma; ad esempio le varie distribuzioni di Linux e
 MacOS usano @code{bash}, mentre Windows usa @code{cmd}.  Nota che su
-MacOS X bisogna configurare il sistema per usare l'interprete da linea
-di comando.  Di seguito alcuni makefile di esempio, con versioni sia per
+MacOS X è necessario configurare il sistema per usare l'interprete da linea
+di comando.  Di seguito alcuni Makefile di esempio, con versioni sia per
 Linux/MacOS sia per Windows.
 
-Il primo esempio è per un'opera per orchestra in quattro
-movimenti e ha la seguente struttura di directory:
+Il primo esempio è per una composizione per orchestra in quattro
+movimenti e presenta una directory strutturata come segue:
 
 @example
 Symphony/
@@ -327,12 +329,12 @@ nella directory @file{Notes}:
 \include ../Notes/cello.ily
 @end example
 
-Il makefile avrà i target di @code{score} (l'intero brano in partitura
-completa), @code{movements} (movimenti individuali in partitura completa),
-e @code{parts} (parti individuali per i musicisti).  C'è anche un
+Il Makefile avrà i target di @code{score} (l'intero brano in partitura
+completa), @code{movements} (singoli movimenti in partitura completa),
+e @code{parts} (singole parti per i musicisti).  C'è anche un
 target @code{archive} che creerà un archivio compresso dei file sorgenti,
 utile per la condivisione via web o email.  Ecco un esempio di
-makefile per GNU/Linux e MacOS X.  Dovrebbe essere salvato col
+Makefile per GNU/Linux e MacOS X.  Dovrebbe essere salvato col
 nome @code{Makefile} nella directory principale del progetto:
 
 @warning{Quando si definisce un target o una regola di pattern, le
@@ -430,7 +432,7 @@ archive:
 @end example
 
 
-Ci sono complicazioni specifiche nella piattaforma Windows.  Dopo aver
+Ci sono alcune complicazioni specifiche della piattaforma Windows.  Dopo aver
 scaricato e installato GNU Make per Windows, bisogna impostare il percorso
 corretto nelle variabili d'ambiente di sistema perché la
 shell DOS possa trovare il programma Make.  Per farlo, clicca col tasto destro
@@ -444,7 +446,7 @@ avrà un aspetto simile:
 C:\Program Files\GnuWin32\bin
 @end example
 
-Lo stesso makefile deve essere modificato per gestire diversi comandi
+Lo stesso Makefile deve essere modificato per gestire diversi comandi
 shell e gli spazi che sono presenti in alcune directory predefinite
 di sistema.  Il target @code{archive} target viene tolto perché Windows
 non ha il comando @code{tar}; inoltre Windows ha una diversa estensione
@@ -578,10 +580,10 @@ archive:
 
 @c TODO: make this thing work on Windows
 
-Il makefile precedente non funziona su Windows.  Un'alternativa per
+Il Makefile precedente non funziona su Windows.  Un'alternativa per
 gli utenti Windows consiste nel creare un semplice file batch
 contenente i comandi per la compilazione.  Questo file non terrà
-traccia delle dipendenze come fa invece un makefile, ma almeno riduce
+traccia delle dipendenze come fa invece un Makefile, ma almeno riduce
 il processo di compilazione a un solo comando.  Salva il codice
 seguente come @command{build.bat} o @command{build.cmd}.
 Il file batch può essere eseguito nel prompt DOS o semplicemente con
index 953cc5d3c4f0da3770d6a647609e12655da787cf..f38736b1f7bb66e5b5db32b78bc445004240736c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 
 @ignore
-    Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
+    Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -26,7 +26,7 @@ gran parte dei cambiamenti di sintassi tra le versioni di LilyPond.
 
 @menu
 * Perché la sintassi cambia?::
-* Invocare convert-ly::
+* Utilizzo di convert-ly::
 * Opzioni da linea di comando per convert-ly::
 * Problemi nell'eseguire convert-ly::
 * Conversioni manuali::
@@ -67,8 +67,8 @@ tutti i caratteri speciali di LaTeX con i rispettivi caratteri UTF-8; è necessa
 aggiornare a mano i vecchi file di input di LilyPond.
 
 
-@node Invocare convert-ly
-@section Invocare @command{convert-ly}
+@node Utilizzo di convert-ly
+@section Utilizzo di @command{convert-ly}
 @translationof Invoking convert-ly
 
 @command{convert-ly} usa la dichiarazione @code{\version} nel file di input
index 1cd9db36f75f2dfff8d131df1ad44fb352292835..1b3486611f966a5f7843a473f3b8419545c4c60d 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{最終更新日 Thu Mar 24 14:52:33 UTC 2011
+@emph{最終更新日 Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -165,7 +165,7 @@ LilyPond --- \TITLE\
 @item
 4 出力を調整する
 @*
-15408
+15393
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -302,17 +302,17 @@ LilyPond --- \TITLE\
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">はい</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-はい
+partially
 @end ifnothtml
 @tab post-GDP
 @item
 1.1 ピッチ
 @*
-4479
+4502
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -329,7 +329,7 @@ LilyPond --- \TITLE\
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially</span>
+<span style="background-color: #2cff20">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -364,7 +364,7 @@ partially
 @end ifnothtml
 @tab post-GDP
 @item
-1.3 表現記号
+1.3 発想記号
 @*
 1726
 @tab Yoshiki Sawada
@@ -393,7 +393,115 @@ partially
 @item
 1.4 繰り返し
 @*
-930
+945
+@tab Yoshiki Sawada
+@tab 
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #39ff22">partially</span>
+@end html
+@end ifhtml
+@ifnothtml
+partially
+@end ifnothtml
+@tab post-GDP
+@item
+1.5 同時進行する音符
+@*
+2216
+@tab Yoshiki Sawada
+@tab 
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #83fe2c">partially</span>
+@end html
+@end ifhtml
+@ifnothtml
+partially
+@end ifnothtml
+@tab post-GDP
+@item
+1.6 譜の記譜法
+@*
+2345
+@tab Yoshiki Sawada
+@tab 
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #9eff30">partially</span>
+@end html
+@end ifhtml
+@ifnothtml
+partially
+@end ifnothtml
+@tab post-GDP
+@item
+1.7 編集者の注釈
+@*
+931
+@tab Yoshiki Sawada
+@tab 
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab post-GDP
+@item
+1.8 テキスト
+@*
+2716
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -540,7 +648,7 @@ LilyPond --- \TITLE\
 @item
 3 @command{lilypond-book}: Integrating text and music
 @*
-3764
+3952
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -557,7 +665,7 @@ LilyPond --- \TITLE\
 @ifhtml
 
 @html
-<span style="background-color: #91ff2e">partially</span>
+<span style="background-color: #97ff2f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -691,7 +799,7 @@ Yoshinobu Ishizaki
 @item
 導入部
 @*
-4506
+4564
 @tab Yoshiki Sawada
 @*
 Yoshinobu Ishizaki
@@ -720,7 +828,7 @@ Yoshinobu Ishizaki
 @item
 ダウンロード
 @*
-1183
+1195
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -737,17 +845,17 @@ Yoshinobu Ishizaki
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">はい</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-はい
+partially
 @end ifnothtml
 @tab pre-GDP
 @item
 マニュアル
 @*
-1200
+1203
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -764,11 +872,11 @@ Yoshinobu Ishizaki
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">はい</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-はい
+partially
 @end ifnothtml
 @tab pre-GDP
 @item
index 97b2cadfd9744d9f432379e93338f9303349185e..40f46cf6759762ad27da16ba89e1b801480b44e8 100644 (file)
@@ -2793,42 +2793,55 @@ r4
 \acciaccatura e8\( d8 c~ c d c d\)
 @end lilypond
 
-Here's a further example taken from the opening of the left-hand
-staff of Chopin's Prelude Op 28 No. 2.  We see that the beam
-collides with the upper notes:
+Here's a further example.  We see that the beams
+collide with the ties:
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
+  \time 4/2
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
 }
 @end lilypond
 
 @noindent
 This can be resolved by manually moving both ends of the beam
-up from their position at 2 staff-spaces above the center line to,
-say, 3:
+up from their position at 1.81 staff-spaces below the center line to,
+say, 1:
 
 @cindex Beam, example of overriding
 @cindex positions property, example
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
+  \time 4/2
   <<
-    \override Beam #'positions = #'(3 . 3)
-    { b,8 ais, b, g, }
-  \\
-    { e,8 g e, g }
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    {
+      \override Beam #'positions = #'(-1 . -1)
+      e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g''
+    }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
 }
 @end lilypond
 
 @noindent
 Note that the override continues to apply in the first voice of
-the second block of quavers, but not to any of the beams in the
+the second measure of eighth notes, but not to any of the beams in the
 second voice.
 
 @subheading force-hshift property
index 1259b05c7c19bbb35c41fa31b7b8dafac97a7992..f2f5c13aac2b6892245f706e3a5e1d80c04f36da 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; fill-column: 60 -*-
 @ignore
-    Translation of GIT committish: b275aa092642adb798079f7853309e2f5e4383ce
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -214,7 +214,7 @@ Maak een tekstbestand met de naam @file{test.ly} en vul het met:
 
 @c double \\ required because this is inside a macro!
 @example
-\\version "@w{@version{}}"
+\\version "@w{@versionStable{}}"
 @{
   c' e' g' e'
 @}
@@ -234,7 +234,7 @@ lilypond test.ly
 Je ziet dan iets dat lijkt op:
 
 @example
-GNU LilyPond @w{@version{}}
+GNU LilyPond @w{@versionStable{}}
 Verwerken van `test.ly'
 Ontleden...
 Vertolken van muziek...
index d12808b24f5e22444aa618924f5b5efe4264e932..55ab796c98c8ab390b0a8dcb26daea01cce348ed 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; fill-column: 60 -*-
 
 @ignore
-    Translation of GIT committish: 66dd932f6519b7913400a838c5efbc5407e06cd8
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -170,7 +170,7 @@ a1 |
 
 Terminologie: @rglos{accidental}, @rglos{key signature},
 @rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
-@rglos{transposition}.
+@rglos{transposition}, @rglos{Pitch names}.
 
 Om uit te maken of er wel of geen @notation{toevallig teken}
 geprint moet worden, onderzoekt LilyPond de toonhoogten en
@@ -239,9 +239,6 @@ Notatiehandleiding:
 @ruser{Automatic accidentals},
 @ruser{Key signature}.
 
-Terminologie:
-@rglos{Pitch names}.
-
 
 @node Overbindingen en legatobogen
 @translationof Ties and slurs
@@ -852,7 +849,10 @@ partituren.
 @funindex GrandStaff
 @funindex ChoirStaff
 
-Terminologie: @rglos{brace}.
+Terminologie:
+@rglos{brace},
+@rglos{staff},
+@rglos{system}.
 
 Pianomuziek wordt meestal genoteerd op twee notenbalken die
 verbonden zijn door een @notation{accolade}.  Het afdrukken
@@ -897,6 +897,8 @@ Notatiehandleiding:
 @translationof Combining notes into chords
 @subsection Het combineren van noten tot accoorden
 
+Terminologie: @rglos{chord}.
+
 @cindex accoorden
 @cindex nootlengten in accoorden
 
@@ -904,8 +906,6 @@ Notatiehandleiding:
 @funindex >
 @funindex < ... >
 
-Terminologie: @rglos{chord}.
-
 We zagen eerder hoe noten kunnen worden gecombineerd tot
 @notation{accoorden} door aan te geven dat ze tegelijk
 klinken door ze tussen dubbele gehoekte haken te zetten.
@@ -927,10 +927,15 @@ waardestrepen en overbindingen gebruiken met accoorden.  Ze
 worden geplaatst buiten de hoekige haken.
 
 @lilypond[verbatim,quote,relative=2]
-r4 <c e g>8[ <c f a>]~ <c f a>2 |
-r4 <c e g>8( <c e g>\> <c e g>4 <c f a>\!) |
+r4 <c e g>~ <c f a>2 |
+<c e g>8[ <c f a> <c e g> <c f a>] <c e g>\>[ <c f a> <c f a> <c e g>]\! |
+r4 <c e g>8.\p <c f a>16( <c e g>4-. <c f a>) |
 @end lilypond
 
+@seealso
+Notatiehandleiding:
+@ruser{Chorded notes}.
+
 
 @node Polyfonie binnen een notenbalk
 @translationof Single staff polyphony
@@ -1017,15 +1022,14 @@ een spatie.
 >>
 @end lilypond
 
-Merk de accolades op die zowel de muziek als de liedtekst
-afbakenen.  Het is van essentiëel belang dat de laatste
+@warning{Het is van essentiëel belang dat de laatste
 lettergreep van de afsluitende accolade gescheiden wordt
 door een spatie of nieuwe regel, anders wordt aangenomen dat
 de accolade nog deel uitmaakt van die lettergreep, wat een
 obscure foutmelding oplevert, zie @rprogram{Apparent error
-in ../ly/init.ly}.
+in ../ly/init.ly}.}
 
-Merk tevens de hoekige haken @w{@code{<< ... >>}} op die om
+Merk de hoekige haken @w{@code{<< ... >>}} op die om
 het hele stuk heen staan en aangeven dat de muziek en de
 woorden tegelijk klinken.
 
index 05557e40cccac8acaf2086f67c68d11221203843..9f33f9a1da8a6d04ac36fa84b829813df72a6a6c 100644 (file)
@@ -545,8 +545,8 @@ So, for example, a phrasing slur can start before a manually
 inserted beam and end before the end of the beam -- not very
 musical, perhaps, but possible:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
- { g8\( a b[ c b\) a] g4 }
+@lilypond[quote,verbatim,ragged-right,relative=2]
+g8\( a b[ c b\) a] g4
 @end lilypond
 
 In general, different kinds of brackets, bracket-like constructs,
@@ -556,13 +556,11 @@ a slur extending into a tuplet (line 2), a beam and a slur
 extending into a tuplet, a tie crossing two tuplets, and a
 phrasing slur extending out of a tuplet (lines 3 and 4).
 
-@lilypond[quote,verbatim,fragment,ragged-right]
-{
-  r16[ g \times 2/3 { r16 e'8] }
-  g16( a \times 2/3 { b16 d) e' }
-  g8[( a \times 2/3 { b8 d') e'~] } |
-  \times 4/5 { e'32\( a b d' e' } a'4.\)
-}
+@lilypond[quote,verbatim,ragged-right,relative=1]
+r16[ g \times 2/3 { r16 e'8] }
+g,16( a \times 2/3 { b16 d) e }
+g,8[( a \times 2/3 { b8 d) e~] } |
+\times 4/5 { e32\( a, b d e } a4.\)
 @end lilypond
 
 
@@ -614,7 +612,7 @@ A single voice can contain many notes in a chord, of course,
 so when exactly are multiple voices needed?  Look first at
 this example of four chords:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+@lilypond[quote,verbatim,ragged-right,relative=1]
 \key g \major
 <d g>4 <d fis> <d a'> <d g>
 @end lilypond
@@ -649,7 +647,7 @@ of polyphony.
 Here's how we split the chords above into two voices and add both
 the passing note and a slur:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
 \key g \major
 %    Voice "1"               Voice "2"
 << { g4 fis8( g) a4 g } \\ { d4 d d d }  >>
@@ -659,7 +657,7 @@ Notice how the stems of the second voice now point down.
 
 Here's another simple example:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
 \key d \minor
 %    Voice "1"             Voice "2"
 << { r4 g g4. a8 }    \\ { d,2 d4 g }       >> |
@@ -668,12 +666,12 @@ Here's another simple example:
 @end lilypond
 
 It is not necessary to use a separate @code{<< \\ >>} construct
-for each bar. For music with few notes in each bar this layout
+for each bar.  For music with few notes in each bar this layout
 can help the legibility of the code, but if there are many
 notes in each bar it may be better to split out each voice
 separately, like this:
 
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
 \key d \minor
 << {
   % Voice "1"
@@ -692,7 +690,7 @@ separately, like this:
 @cindex voices, naming
 @cindex voices crossing brackets
 @cindex slurs crossing brackets
-@cindex ties crossing brackest
+@cindex ties crossing brackets
 
 This example has just two voices, but the same construct may be
 used to encode three or more voices by adding more back-slash
@@ -702,7 +700,7 @@ The Voice contexts bear the names @code{"1"}, @code{"2"}, etc.
 In each of these contexts, the vertical direction of slurs,
 stems, ties, dynamics etc., is set appropriately.
 
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
 \new Staff \relative c' {
   % Main voice
   c16 d e f
@@ -894,7 +892,7 @@ shall see, this encounters some difficulties.  We begin as
 we have learnt, using the @code{<< \\  >>} construct to
 enter the music of the first bar in three voices:
 
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
 \new Staff \relative c'' {
   \key aes \major
   <<
@@ -914,10 +912,10 @@ odd-numbered voices taking upward stems and the even-numbered
 voices downward ones.  The stems for voices 1 and 2 are right,
 but the stems in voice 3 should go down in this particular piece
 of music.  We can correct this by skipping voice three
-and placing the music in voice four. This is done by simply
+and placing the music in voice four.  This is done by simply
 adding another pair of @code{\\}.
 
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
 \new Staff \relative c'' {
   \key aes \major
   <<  % Voice one
@@ -941,11 +939,11 @@ voices to occupy the same vertical note column provided the stems are
 in opposite directions, but the notes from the third and fourth voices
 are displaced, if necessary, to avoid the note heads colliding.  This
 usually works well, but in this example the notes of the lowest voice
-are clearly not well placed by default. LilyPond provides several ways
+are clearly not well placed by default.  LilyPond provides several ways
 to adjust the horizontal placing of notes.  We are not quite ready yet
 to see how to correct this, so we shall leave this problem until a
-later section --- see the @code{force-hshift} property in @ref{Fixing
-overlapping notation}.
+later section --- see the @code{force-hshift} property in
+@ref{Fixing overlapping notation}.
 
 
 @seealso
@@ -1174,7 +1172,7 @@ relative to the other notes.
 The @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, and
 @code{\shiftOff} commands specify the degree to which notes and
 chords of the voice should be shifted if a collision
-would otherwise occur. By default, the outer voices (normally
+would otherwise occur.  By default, the outer voices (normally
 voices one and two) have @code{\shiftOff} specified, while the
 inner voices (three and four) have @code{\shiftOn} specified.
 When a shift is applied, voices one and three are shifted to
@@ -1217,7 +1215,7 @@ explicitly link
 the lyrics to the notes with @code{\lyricsto@{@}}, using the
 name assigned to the Voice.
 
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
 <<
   \new Voice = "one" {
     \relative c'' {
@@ -1391,7 +1389,7 @@ appear explicitly in the input file must be added to the
 output.  For example, compare the input and output of the
 following example:
 
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
 cis4 cis2. | a4 a2. |
 @end lilypond
 
@@ -1485,16 +1483,11 @@ where @var{type} is a context name (like @code{Staff} or
 @code{Voice}).  This command creates a new context, and starts
 interpreting the @var{music-expression} within that context.
 
-(Note that a @code{\new Score} command is not normally required,
-as the essential top-level @code{Score} context is created
-automatically when the music expression within the @code{\score}
-block is interpreted.  The only reason for creating a @code{Score}
-context explicitly using @code{\new Score} is to introduce a
-@code{\with} block in which one or more score-wide default values
-of context properties may be specified.  Information on using
-@code{\with} blocks can be found under the heading
-@qq{Setting context properties with @code{\\with} } in
-@ref{Modifying context properties}.)
+@warning{@bs{}@code{new Score} should not be used as the essential
+top-level @code{Score} context is created automatically when the music
+expression within the @bs{}@code{score} block is interpreted.  Score-wide
+default values of context properties can be changed within the
+@bs{}@code{layout} block.  See @ref{Modifying context properties}}
 
 You have seen many practical examples which created new
 @code{Staff} and @code{Voice} contexts in earlier sections, but
@@ -1837,7 +1830,7 @@ font size, which affects the size of the note heads (among
 other things) several times.  The change is from the default
 value, not the most recently set value.
 
-@lilypond[quote,verbatim,ragged-right,relative=1,fragment]
+@lilypond[quote,verbatim,ragged-right,relative=1]
 c4 d
 % make note heads smaller
 \set fontSize = #-4
@@ -1895,27 +1888,6 @@ like this:
 >>
 @end lilypond
 
-Or, if the property override is to be applied to all staves
-within the score, it may be appended to an explicit
-@code{\new Score} command, like this:
-
-@lilypond[quote,verbatim,ragged-right]
-\score {
-  \new Score \with { extraNatural = ##f } <<
-    \new Staff {
-      \relative c'' {
-        gis4 ges aes ais
-      }
-    }
-    \new Staff {
-      \relative c'' {
-        gis4 ges aes ais
-      }
-    }
-  >>
-}
-@end lilypond
-
 Properties set in this way may still be changed dynamically using
 @code{\set} and returned to the default value set in the
 @code{\with} block with @code{\unset}.
@@ -1960,6 +1932,31 @@ throughout the @code{\score} or @code{\book} block in which the
 }
 @end lilypond
 
+If the property override is to be applied to all staves
+within the score:
+
+@lilypond[quote,verbatim]
+\score {
+  <<
+    \new Staff {
+      \relative c'' {
+        gis4 ges aes ais
+      }
+    }
+    \new Staff {
+      \relative c'' {
+        gis4 ges aes ais
+      }
+    }
+  >>
+  \layout {
+    \context {
+      \Score extraNatural = ##f
+    }
+  }
+}
+@end lilypond
+
 @noindent
 Context properties set in this way may be overridden for particular
 instances of contexts by statements in a @code{\with} block, and by
@@ -2133,11 +2130,16 @@ for all contexts of a particular type by including the
 @code{\set} command in a @code{\context} block in the
 same way.
 
-
 @seealso
 Notation Reference: @ruser{Modifying context plug-ins},
 @ruser{Changing context default settings}.
 
+@knownissues
+The @code{Stem_engraver} and @code{Beam_engraver} attach their
+objects to note heads.  If the @code{Note_heads_engraver} is removed
+no note heads are produced and therefore no stems or beams are created
+either.
+
 
 @node Extending the templates
 @section Extending the templates
@@ -2454,8 +2456,8 @@ lower = \relative c, {
 @end lilypond
 
 None of the templates provides this layout exactly.  The nearest is
-@q{SATB vocal score and automatic piano reduction} -- see @ref{Vocal
-ensembles} -- but we need to change the layout and add a piano
+@q{SATB vocal score and automatic piano reduction} -- see
+@ref{Vocal ensembles} -- but we need to change the layout and add a piano
 accompaniment which is not derived automatically from the vocal parts.
 The variables holding the music and words for the vocal parts are
 fine, but we shall need to add variables for the piano reduction.
@@ -2844,6 +2846,76 @@ signature to each staff using our predefined variable, @code{\keyTime}.
 @}  % end Score context
 @end example
 
+@cindex stretchability of staves
+@cindex staves, stretchability
+
+The above layout of the organ staves is almost perfect; however,
+there is a slight defect which is not visible by looking at just a
+single system: The distance of the pedal staff to the left hand staff
+should behave approximately the same as the right hand staff to the
+left hand staff.  In particular, the stretchability of staves in a
+@code{PianoStaff} context is limited (so that the distance between
+the staves for the left and right hand can't become too large), and
+the pedal staff should behave similarly.
+
+@cindex sub-properties
+@cindex properties, sub-properties
+@cindex graphical objects
+@cindex objects, graphical
+@cindex grobs
+
+Stretchability of staves can be controlled with the
+@code{staff-staff-spacing} property of the
+@code{VerticalAxisGroup} @q{graphical object} (commonly called
+@q{grob}s within the lilypond documentation) -- don't worry about
+the details right now; this is fully explained later.  For the
+curious, have a look at @ruser{Overview of modifying properties}.
+In this case, we want to modify the @code{stretchability}
+sub-property only. Again, for the curious, you can find the
+default values for the staff-staff-spacing property
+in file @file{scm/define-grobs.scm} by looking up the definition
+of the @code{VerticalAxisGroup} grob.  The value for
+@code{stretchability} is taken from the definition of the
+@code{PianoStaff} context (in file @file{ly/engraver-init.ly})
+so that the values are identical.
+
+@example
+\score @{
+  <<  % PianoStaff and Pedal Staff must be simultaneous
+    \new PianoStaff <<
+      \new Staff = "ManualOne" <<
+        \keyTime  % set key and time signature
+        \clef "treble"
+        \new Voice @{
+          \voiceOne
+          \ManualOneVoiceOneMusic
+        @}
+        \new Voice @{
+          \voiceTwo
+          \ManualOneVoiceTwoMusic
+        @}
+      >>  % end ManualOne Staff context
+      \new Staff = "ManualTwo" \with @{
+        \override VerticalAxisGroup
+          #'staff-staff-spacing  #'stretchability = 5
+      @} <<
+        \keyTime
+        \clef "bass"
+        \new Voice @{
+          \ManualTwoMusic
+        @}
+      >>  % end ManualTwo Staff context
+    >>  % end PianoStaff context
+    \new Staff = "PedalOrgan" <<
+      \keyTime
+      \clef "bass"
+      \new Voice @{
+        \PedalOrganMusic
+      @}
+    >>  % end PedalOrgan Staff
+  >>
+@}  % end Score context
+@end example
 That completes the structure.  Any three-staff organ music
 will have a similar structure, although the number of voices
 may vary.  All that remains now
@@ -2887,7 +2959,10 @@ PedalOrganMusic = \relative c {
           \ManualOneVoiceTwoMusic
         }
       >>  % end ManualOne Staff context
-      \new Staff = "ManualTwo" <<
+      \new Staff = "ManualTwo" \with {
+        \override VerticalAxisGroup
+          #'staff-staff-spacing #'stretchability = 5
+      } <<
         \keyTime
         \clef "bass"
         \new Voice {
@@ -2906,6 +2981,9 @@ PedalOrganMusic = \relative c {
 }  % end Score context
 @end lilypond
 
+@seealso
+Music Glossary:
+@rglos{system}.
 
 @node Saving typing with variables and functions
 @subsection Saving typing with variables and functions
@@ -3156,4 +3234,3 @@ leading to
 >>
 @end lilypond
 
-
index 0b08b426b0964d27edcd37ee4da3f8019824cbfb..055bc6f87b681ddc07b78294eb11443006dead30 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; fill-column: 60 -*-
 @ignore
-    Translation of GIT committish: 66dd932f6519b7913400a838c5efbc5407e06cd8
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -389,16 +389,42 @@ naam @code{r}@tie{}:
 
 Terminologie: @rglos{time signature}.
 
-De @notation{maatsoort} kun je aangeven met het @code{\time}
-commando:
+De @notation{maatsoort} kun je aangeven met het @code{\time}-commando:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  \time 3/4
+  a4 a a
+  \time 6/8
+  a4. a
+  \time 4/4
+  a4 a a a
+}
+@end lilypond
+
+@subheading Tempo-aanduidingen
+
+@cindex tempo marks
+@cindex metronome marks
+
+@funindex \tempo
+@funindex tempo
+
+Terminologie: @rglos{tempo indication}, @rglos{metronome}.
+
+De @notation{tempo indication} en @notation{metronome mark} worden
+gezet met het @code{\tempo}-commando:
 
 @lilypond[verbatim,quote]
 \relative c'' {
   \time 3/4
+  \tempo "Andante"
   a4 a a
   \time 6/8
+  \tempo 4. = 96
   a4. a
   \time 4/4
+  \tempo  "Presto" 4 = 120
   a4 a a a
 }
 @end lilypond
@@ -444,6 +470,7 @@ toont:
 \relative c, {
   \clef "bass"
   \time 3/4
+  \tempo "Andante" 4 = 120
   \clef "bass"
   c2 e8 c'
   g'2.
index a7e20d7b5fe9b28eeb227072b5d11428eb984960..75288f4cd6dc4f017ea041fe03b54ba673647670 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 77c34ddc0877c0625a48e1b41049b6dbaae215e0
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -16,7 +16,7 @@
 MACRO DEFINITIONS GUIDELINES
 ****************************
 
-This file should contain macro defintions which are common to all
+This file should contain macro definitions which are common to all
 languages, i.e. all macro definitions which do not contain text that
 should be translated (namely text visible in the output).
 
@@ -68,6 +68,36 @@ translations should be in macros.itexi.
 @end ifnothtml
 
 
+@c do not translate the following macro -- it is used in
+@c an untranslated manual.
+
+@ifhtml
+
+@macro advanced{TEXT}
+@html
+<div class="advanced">
+@end html
+@strong{Advanced note:} \TEXT\
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+@end ifhtml
+
+@ifnothtml
+
+@macro advanced{TEXT}
+@quotation
+@b{Advanced note:} \TEXT\
+@end quotation
+@end macro
+
+@end ifnothtml
+
+
 @macro docMain
 @cartouche
 Voor meer informatie over waar deze handleiding in de rest van de
index b28d1a7ee893c1f934891852fc2defa38ebc6993..51687b776596d498d0e8b62576483212aa3f2da9 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-    Translation of GIT committish: eef24b23f2bd35eb068584c2c459ba97227caf15
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -8,11 +8,11 @@
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org +v2.12 '
+      onSubmit="search.q.value='site:lilypond.org +v2.14 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org +v2.12 '
+      onMouseMove="search.q.value='site:lilypond.org +v2.14 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org +v2.12 '
+      onKeyUp="search.q.value='site:lilypond.org +v2.14 '
               + 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 f8c7605b204fd24e4682b21b223c449e18ef40b0..8665e73f7f2f1b606a973b2364777e4674233c1c 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Meest recente update Thu Mar 24 14:52:33 UTC 2011
+@emph{Meest recente update Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -74,11 +74,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab voor-GDP
 @item
@@ -101,11 +101,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab voor-GDP
 @item
@@ -128,11 +128,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab voor-GDP
 @item
@@ -194,11 +194,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #c0ff34">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab na-GDP
 @item
@@ -221,17 +221,17 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab voor-GDP
 @item
 Inleiding
 @*
-4506
+4564
 @tab Jan Nieuwenhuizen
 @tab Tineke de Munnik
 @tab 
@@ -248,17 +248,17 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #54ff26">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab voor-GDP
 @item
 Download
 @*
-1183
+1195
 @tab Jan Nieuwenhuizen
 @tab Tineke de Munnik
 @tab 
@@ -275,17 +275,17 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #54ff26">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab voor-GDP
 @item
 Handleidingen
 @*
-1200
+1203
 @tab Jan Nieuwenhuizen
 @tab Tineke de Munnik
 @tab 
@@ -302,11 +302,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #5bff27">gedeeltelijk</span>
+<span style="background-color: #1fff1f">ja</span>
 @end html
 @end ifhtml
 @ifnothtml
-gedeeltelijk
+ja
 @end ifnothtml
 @tab voor-GDP
 @end multitable
index c432b127b0a40cc527476ea27382746df481435a..da78bc54aae0bd48827b15ee31c420fe1c933bf4 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
 @ignore
-    Translation of GIT committish: 66dd932f6519b7913400a838c5efbc5407e06cd8
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -24,8 +24,6 @@
 @include macros.itexi
 @include weblinks.itexi
 
-@afourpaper
-
 @c don't remove this comment.
 @ignore
 @omfcreator Graham Percival and Patrick McCarty
@@ -54,6 +52,25 @@ License''.
 @end quotation
 @end copying
 
+@c Info files are no longer installed in a subdirectory, images are
+@c expected to be found in lilypond/ subdirectory.
+@dircategory GNU LilyPond --- the music typesetter
+@direntry
+* LilyPond Learning Manual: (lilypond-learning).  Start here.
+* Music Glossary: (music-glossary).               For non-English users.
+* LilyPond: (lilypond-notation).                           LilyPond Notation Reference.
+* LilyPond Snippets: (lilypond-snippets).         Short tricks, tips, and examples.
+* LilyPond Internals Reference: (lilypond-internals).  Definitions for tweaking.
+* LilyPond Application Usage: (lilypond-usage). Installing and running applications.
+* LilyPond Website: (lilypond-web).    Preview of new website.
+* lilypond: (lilypond-usage)Running LilyPond.      Invoking the LilyPond program.
+* abc2ly: (lilypond-usage)Invoking abc2ly.      Importing ABC.
+* convert-ly: (lilypond-usage)Updating files with convert-ly. Older LilyPond versions.
+* etf2ly: (lilypond-usage)Invoking etf2ly.      Importing Finale.
+* lilypond-book: (lilypond-usage)LilyPond-book. Integrating text and music.
+* midi2ly: (lilypond-usage)Invoking midi2ly.    Importing MIDI.
+* musicxml2ly: (lilypond-usage)Invoking musicxml2ly.  Importing MusicXML.
+@end direntry
 
 @c TITLE PAGE
 @ifnottex
@@ -100,7 +117,7 @@ Voor LilyPond versie @version{}
 @divId{quickSummary}
 @subheading Wat is LilyPond?
 
-LilyPond is een muzieknotatie programma en beoogt het produceren van
+LilyPond is een muzieknotatieprogramma en beoogt het produceren van
 bladmuziek van de hoogst mogelijke kwaliteit.  Het integreert de
 esthetiek van traditioneel gegraveerde bladmuziek in computer printouts.
 LilyPond is vrije software en is onderdeel van het
@@ -187,27 +204,6 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @end ignore
 
-@c Info files are no longer installed in a subdirectory, images are
-@c expected to be found in lilypond/ subdirectory.
-@dircategory GNU LilyPond --- the music typesetter
-@direntry
-* LilyPond Learning Manual: (lilypond-learning).  Start here.
-* Music Glossary: (music-glossary).               For non-English users.
-* LilyPond: (lilypond-notation).                           LilyPond Notation Reference.
-* LilyPond Snippets: (lilypond-snippets).         Short tricks, tips, and examples.
-* LilyPond Internals Reference: (lilypond-internals).  Definitions for tweaking.
-* LilyPond Application Usage: (lilypond-usage). Installing and running applications.
-* LilyPond Website: (lilypond-web).    Preview of new website.
-* lilypond: (lilypond-usage)Running LilyPond.      Invoking the LilyPond program.
-* abc2ly: (lilypond-usage)Invoking abc2ly.      Importing ABC.
-* convert-ly: (lilypond-usage)Updating files with convert-ly. Older LilyPond versions.
-* etf2ly: (lilypond-usage)Invoking etf2ly.      Importing Finale.
-* lilypond-book: (lilypond-usage)LilyPond-book. Integrating text and music.
-* midi2ly: (lilypond-usage)Invoking midi2ly.    Importing MIDI.
-* musicxml2ly: (lilypond-usage)Invoking musicxml2ly.  Importing MusicXML.
-@end direntry
-
-
 @c FIXME: this still doesn't solve the broken links in pdf and big
 @c        html; we'll need a bunch of @iftext and stuff in here. -gp
 @c ****************** SPECIAL MACROS FOR WEB MANUAL ************
index 57613ce068b20fab07a683e20d5c30f23e53ef1e..eb44b3d3c2ab8487932fc3516569d3a24cb2b201 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; fill-column: 60 -*-
 @ignore
-    Translation of GIT committish: 303c4023fce97de0cfb2d27a7e689d1ad7c4752b
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -26,7 +26,7 @@ eerst de informatie over onze @ref{Tekstinvoer}.}
 
 @divClass{heading-center}
 @ifclear web_version
-  @c yes, we want verisonDevel here, since the online links
+  @c yes, we want versionDevel here, since the online links
   @c for @version won't be up yet!
   @heading Downloads voor LilyPond @versionDevel
 
@@ -41,13 +41,15 @@ eerst de informatie over onze @ref{Tekstinvoer}.}
 
 @divEnd
 
+@divClass{link-headings}
+
 @divClass{column-left-top}
 @subheading Voor gebruikers
 
 @itemize
 
 @item
-@c TODO: duplicate to avoid underlined refs in HTML?  icky.
+@c ref is duplicated to avoid underlining ref as image.
 @ref{Unix, @sourceimage{logo-linux,,,}
 @sourceimage{logo-freebsd,,,}}
 @ref{Unix, Unix (Linux en FreeBSD)}
@@ -84,6 +86,7 @@ meest recente ontwikkelversie
 @end itemize
 @divEnd
 
+@divEnd
 
 @divClass{column-center-bottom}
 
@@ -98,7 +101,7 @@ License} (GNU Algemene Publieke Licentie).
 
 @subheading Sponsors
 
-Hartelijk dank aan @uref{http://www.vt.edu/, Virgina Tech} en
+Hartelijk dank aan @uref{http://www.vt.edu/, Virginia Tech} en
 @uref{http://www.linuxaudio.org/, linuxaudio.org} voor het
 sponsoren van onze bandbreedte.
 
@@ -213,9 +216,15 @@ Op de commandoregel, typ:
 uninstall-lilypond
 @end example
 
-@divEnd
+@subsubheading Hulp
+
+Op de commandoregel, typ:
 
+@example
+sh lilypond-@versionStable{}-OS-TYPE.sh --help
+@end example
 
+@divEnd
 
 @divClass{column-right-top}
 @subheading Een bestand compileren
@@ -236,22 +245,22 @@ distributie voor het upgraden naar deze versies.
 @item
 @sourceimage{logo-fedora,,,}
 @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.12.3}
+Fedora: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-ubuntu,,,}
 @uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.12.2}
+Ubuntu: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.12.3}
+Slackware: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.2}
+Debian: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-suse,,,}
@@ -295,12 +304,14 @@ acknowledged.
 @item
 @sourceimage{logo-macosx,,,}
 @downloadStableDarwinNormal
-Voor Intel processors (als je twijfelt, gebruik deze).
+Voor MacOS 10.4 of nieuwer, met Intel-processors (als je
+twijfelt, gebruik deze).
 
 @item
 @sourceimage{logo-macosx,,,}
 @downloadStableDarwinPPC
-Voor G3 and G4 CPUs (oudere Apple computers).
+Voor MacOS 10.4 of nieuwer, met G3- en G4-processors (oudere
+Apple computers).
 
 @end itemize
 
@@ -348,11 +359,11 @@ cd ~/bin
 @item
 Maak een bestand genaamd @command{lilypond} met als inhoud
 
-@help obvious css issue to be dealt with.  :(
-@c we need a small font here to fit.  -gp
-@smallexample
+@divClass{h-scroll-auto}
+@example
 exec @var{MAP}/LilyPond.app/Contents/Resources/bin/lilypond "$@@"
-@end smallexample
+@end example
+@divEnd
 
 @warning{@var{MAP} is normaal gesproken @code{/Applications/}}
 
@@ -397,9 +408,11 @@ De scripts --- zoals @command{lilypond-book},
 Scripts kunnen ook worden uitgevoerd op de commandoregel
 door ze direct aan te roepen:
 
+@divClass{h-scroll-auto}
 @example
 @var{pad/naar}/LilyPond.app/Contents/Resources/bin/lilypond
 @end example
+@divEnd
 
 Dat geldt ook voor alle andere scripts in die map, zoals
 @command{lilypond-book} en @command{convert-ly}.
@@ -438,7 +451,7 @@ acknowledged.
 @item
 @sourceimage{logo-windows,,,}
 @downloadStableWindows
-Voor Windows ME, NT, 2000, XP, Vista, en Windows 7.
+Voor Windows 2000, XP, Vista, en Windows 7.
 
 @end itemize
 
@@ -626,6 +639,3 @@ gegeven in @ref{Vrijheid}.
 @include gpl.itexi
 
 @divEnd
-
-
-
index 03b9995f082f4791534a2286fdc67fdb1aad986b..4785f0c9b4e526f855355b687c9b57a53025cc0e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl; fill-column: 60 -*-
 @c This file is part of web.texi
 @ignore
-    Translation of GIT committish: 303c4023fce97de0cfb2d27a7e689d1ad7c4752b
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -34,6 +34,8 @@ volgens de beste tratities van klassieke muziekgravure.
 
 @divEnd
 
+@divClass{link-headings}
+
 @divClass{column-left-top}
 @subheading Wat LilyPond doet
 
@@ -82,6 +84,11 @@ volgens de beste tratities van klassieke muziekgravure.
 @end itemize
 @divEnd
 
+@divEnd
+
+@c TRANSLATORS, translations are not yet compiled in Info format, so
+@c it's not worth translating the right column of the following
+@c menu. -JM
 @divClass{hide}
 @menu
 * Functies::                    What can LilyPond do?
@@ -308,7 +315,7 @@ De standaard uitvoer kan ingrijpend worden veranderd.  Dit
 is een indrukwekkende Schenker-analyse, gemaakt door Kris
 Schaffer, voor een artikel in in
 @uref{http://www.linuxjournal.com/article/8364 , Linux
-Journal.}.  Voor de duidelijkheid zijn hier kleuren
+Journal}.  Voor de duidelijkheid zijn hier kleuren
 toegevoegd.
 
 @exampleImage{bach-schenker}
@@ -586,11 +593,10 @@ Publishing}, partituren van hoge kwaliteit van religieuze
 muziek, beschikbaar voor directe download of ouderwets op papier.
 
 @item
-@uref{http://theshadylanepublishing.com/, The Shady Lane
-Publishing}, een @qq{micro muziekuitgeverij} met als
-doelstelling het promoten van een nieuwe vorm van muzikale
-economie, die dichter bij de muzikanten en muziekliefhebbers
-staat.
+@uref{http://shadylane.fr, The Shady Lane Publishing},
+een @qq{micro muziekuitgeverij} met als doelstelling het
+promoten van een nieuwe vorm van muzikale economie, die
+dichter bij de muzikanten en muziekliefhebbers staat.
 
 @end itemize
 
@@ -598,6 +604,7 @@ staat.
 
 @divEnd
 
+@contactUsAbout{concerten of bladmuziek}
 
 @divClass{column-center-bottom}
 @subheading En nu?
@@ -620,6 +627,29 @@ nu te lezen, ga dan verder naar @ref{Essay}.
 @divClass{keep-bullets}
 @itemize
 
+@item
+april 2011
+
+@uref{http://www.linux-magazine.com,Linux Magazine} publiceert een
+artikel getiteld
+@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf,
+Projects on the Move}.  Het is een inleiding in MuseScore,
+
+LilyPond en Chordii.  Auteur Carla Schroder schrijft
+@qq{LilyPond wordt aangestuurd vanaf de commandoregel, maar
+je niet afschrikken door het ontbreken van een GUI; LilyPond
+is gebruiksvriendelijk en gemakkelijk te leren}, en ze geeft
+een direct te gebruiken voorbeeld.
+
++@item
+mei 2010
+
+Peter Kirn, op de Create Digital Music website, publiceert een
+@uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/,LilyPond
+recentie}.  Hij neemt een
+evenwichtig standpunt in over gebruik, prijst LilyPonds
+hoge kwaliteit van notatie en stelt voor het zelf uit te proberen.
+
 @item
 september 2009
 
@@ -627,7 +657,25 @@ Het Duitse blad LinuxUser schrijft een
 @uref{http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2009/10/Digitaler-Notenschluessel,
 artikel over LilyPond}.
 
+@item
+augustus 2009
+
+Ann Drinan, op de
+@uref{http://www.polyphonic.org/article.php?id=188, Polyphonic.org}
+website, presenteert opmerkingen van twee orkestbibliothekarissen
+die praten over het gebruik van software om hun bibliotheken te
+onderhouden.
 
+@item
+juni 2009
+
+In een @uref{http://news.lilynet.net/Free-Music-Now, artikel}
+gepubliceerd in het Franse @emph{National Conservatory Parent
+Association}'s jaarblad, legt de Franse componist en LilyPond-bijdrager
+Valentin Villenave uit waarom Vrije licenties, en in het bijzonder
+LilyPond-gegraveerde partituren, van instrumenteel belang zijn in
+het voor iedereen toegankelijk maken van genoteerde muziek.
 @item
 februari 2008
 
@@ -865,8 +913,31 @@ aan een paar vrienden van mij te laten zien hoeveel potentie
 het wel niet heeft.}
 @divEnd
 
+
+@divClass{testimonial-item}
+@subsubheading @uref{http://webusers.siba.fi/~mkuuskan/, Dr. Mika Kuuskankare}, onderzoeker aan de @uref{http://siba.fi, Sibelius Academy Finland}, componist en auteur van Expressive Notation Package (ENP)
+
+@qq{Ik heb het diepste respect voor LilyPond en haar
+scheppers en beheerders omdat ik uit persoonlijke ervaring
+weet hoe moeilijk dit soort software kan zijn.}
+@divEnd
+
+
+@divClass{testimonial-item}
+@subsubheading @uref{http://camerondh.blogspot.com, David Cameron}, Muzikant, professioneel typesetter en sinds lang SCORE-gebruiker
+
+@qq{Mijn hartelijke dank aan iedereen die bijdraagt​aan dit
+project.  Ik was een power SCORE-gebruiker voor grote
+zetwerk huizen lang geleden in de jaren '90, maar voor mijn
+gevoel maakt LilyPond het mogelijk om precies datgene op
+papier te krijgen wat ik wil, in het bijzonder als het niet
+"standaard" praktijk is.}
+@divEnd
+
 @divEnd
 
+@contactUsAbout{nieuwsberichten of gebruikerservaringen}
+
 @divClass{column-center-bottom}
 @subheading En nu?
 
@@ -1074,14 +1145,10 @@ verplaatst ook de cursor in het grafische beeld, en
 syntaxfouten in LilyPond-verfijningen (tweaks) worden
 gehighlight in het tekstvenster.
 
-@warning{Denemo ondersteunt officieel de gedateerde Lilypond
-versie 2.8.7, die veel functies mist die sindsdien zijn
-toegevoegd.  De Denemo-ontwikkelaars werken aktief aan
-ondersteunin van onze huidige stabiele 2.12-versie.}
 @divEnd
 
 @divClass{column-center-top}
-@subheading Tekst omgeving: Emacs en Vim
+@subheading Tekst omgeving
 
 @sourceimage{logo-linux,,,}
 @sourceimage{logo-freebsd,,,}
@@ -1096,9 +1163,9 @@ uitbreidbare editor en kan gebruikt worden als een
 Geïntegreerde Ontwikkel Omgeving (IDE).  Er is een
 @q{lilypond mode} die de taaldefinities voor het werken met
 LilyPond-broncodebestanden levert.  Verder heeft een van
-onze ontwikkelaars @uref{http://nicolas.sceaux.free.fr/
-lilypond/lyqi.html,lyqi} geschreven, een Emacs major mode.
-
+onze ontwikkelaars
+@uref{http://nicolas.sceaux.free.fr/lilypond/lyqi.html,lyqi}
+geschreven, een Emacs major mode.
 
 @uref{http://www.vim.org}
 
@@ -1114,18 +1181,7 @@ LilyPond-invoerbestanden.
 Meer informatie over instellingen voor Emacs en Vim is te
 vinden in @rprogram{Text editor support}.
 
-@divEnd
-
-@ignore these may not need to be here at all, as they are purely
-MacOS scripts.
-
-@divClass{column-center-top}
-@subheading Andere programma's
-
-@subsubheading Tekstomgeving: TexShop
-
 @sourceimage{logo-macosx,,,}
-
 @uref{http://www.uoregon.edu/~koch/texshop}
 
 De TexShop-editor voor MacOS@tie{}X kan uitgebreid worden
@@ -1137,13 +1193,22 @@ van de uitbreidingen die beschikbaar zijn op:
 @uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts}
 @end example
 
-@subsubheading TextMate
+@sourceimage{logo-macosx,,,}
+Er is een LilyPond bundel voor TextMate, een commerciële editor for MacOS.
+Die kan je installeren met:
+
+@example
+mkdir -p /Library/Application\ Support/TextMate/Bundles
+cd /Library/Application\ Support/TextMate/Bundles
+git clone http://github.com/textmate/lilypond.tmbundle.git
+
+@end example
 
 @divEnd
-@end ignore
+
 
 @divClass{column-center-top}
-@subheading Andere programma's die LilyPond-code kunnen exporteren
+@subheading Programma's die LilyPond-code kunnen exporteren
 
 @subsubheading Score, tab en MIDI-editors:
 
@@ -1155,8 +1220,8 @@ van enkelvoudige notenbalken heeft.
 
 @item
 @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd},
-is gebaseerd op de @uref{http://cairographics.org, Cairo}
-bibliotheek en heeft experimentele LilyPond export
+een partituur editor gebaseerd op de @uref{http://cairographics.org, Cairo}
+bibliotheek en heeft experimentele LilyPond export.
 
 @item
 @uref{http://www.tuxguitar.com.ar/,TuxGuitar}, een
@@ -1164,17 +1229,25 @@ multi-track tablatuur-editor en -speler, heeft een
 partituur-beeld en tab-beeld en kan exporteren naar LilyPond.
 
 @item
-@uref{http://musescore.org,MuseScore} heeft onvolledige
-LilyPond-export maar wordt actief ontwikkeld.
+@uref{http://musescore.org,MuseScore}, een partituur-editor,
+heeft onvolledige LilyPond-export maar wordt actief
+ontwikkeld.
 
 @item
-@uref{http://canorus.org,Canorus} kan ook exporteren naar
-LilyPond, maar is nog beta-software.  Testers zijn welkom.
+@uref{http://canorus.org,Canorus}, een partituur-editor, kan
+ook exporteren naar LilyPond, maar is nog beta-software.
+Testers zijn welkom.
 
 @item
 @uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor},
 een realtime monofonische MIDI naar LilyPond-vertaler.
 
+@item
+@uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm,
+NW2LY} een a C#-programma dat een
+@uref{http://www.noteworthysoftware.com/, NoteWorthy}-lied naar
+LilyPond converteert.
+
 @end itemize
 
 @subsubheading Gereedschappen voor de commandoregel
@@ -1182,13 +1255,23 @@ een realtime monofonische MIDI naar LilyPond-vertaler.
 @itemize
 
 @item
-@uref{http://strasheela.sourceforge.net, Strasheela} is
-@qq{een hoog-expressief constraint-gebaseerd muziek
-componeer systeem}.
+@uref{http://www.projectabjad.org/,Abjad}, een
+@uref{http://www.python.org/,Python} API voor Formalized
+Score Control, ontworpen om componisten ingewikkelde stukken
+LilyPond-notatie op te laten bouwen op een iteratieve en
+incrementele manier.
 
 @item
-@uref{http://common-lisp.net/project/fomus/,FOMUS}, een LISP-bibliotheek
-voor het genereren van muzieknotatie.
+@uref{http://common-lisp.net/project/fomus/,FOMUS}, een
+LISP-bibliotheek voor het genereren van muzieknotatie vanuit
+computermuziek softwareomgevingen.
+
+@item
+@uref{http://strasheela.sourceforge.net,Strasheela}, een
+omgeving gebouwd bovenop de
+@uref{http://www.mozart-oz.org/, Mozart/Oz}
+constraint-gebaseerde programmeertaal.
+
 
 @end itemize
 @divEnd
index 352f52be042be69d0b5438f40e681fd9b6cbd878..054157ba8704c04589dbf509c4246aac302c3e4d 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; fill-column: 60 -*-
 @ignore
-    Translation of GIT committish: 303c4023fce97de0cfb2d27a7e689d1ad7c4752b
+    Translation of GIT committish: 6908517be0826a3386264cd6d26d742b18e3a227
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -21,7 +21,6 @@
 @spanEnd
 @end macro
 
-
 @divClass{heading-center}
 @ifclear web_version
   @heading Handleidingen voor LilyPond @version
 
 @divEnd
 
-@c TODO: do we want these links to be in larger text / bold ?   CSS.
+@divClass{link-headings}
 
 @divClass{column-center-top}
 @subheading Inleiding
 
 @itemize
 
-@item @ref{Tekstinvoer}:
-LilyPond is een @strong{tekstgebaseerd} muzieknotatieprogramma.  Lees
-dit eerst!
+@item
+@ref{Tekstinvoer}:
+LilyPond is een @strong{tekstgebaseerd}
+muzieknotatieprogramma.  Lees dit eerst!
 
-@item @ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Beginnen}}
+@item
+@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Beginnen}}
 een @qq{onmisbare} gebruiksvriendelijke inleiding in LilyPond.
 @details{Beginnen}
 
-@item @ifWebLinks{@manualStableGlossarySplitNoName-nl,@rglosnamed{Top,Terminologie}}
+@item
+@ifWebLinks{@manualStableGlossarySplitNoName-nl,@rglosnamed{Top,Terminologie}}
 @emph{(optioneel te lezen)}
 muziektermen en vertalingen.
 @details{Terminologie}
 
-@item @ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}}
+@item
+@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}}
 @emph{(optioneel te lezen)}
 achtergrondinformatie over muzieknotatie dmv de computer.
 @details{Essay}
 
-
 @end itemize
 
 @divEnd
@@ -67,15 +69,18 @@ achtergrondinformatie over muzieknotatie dmv de computer.
 
 @itemize
 
-@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notatie}}
+@item
+@ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notatie}}
 syntax handleiding.
 @details{Notatie}
 
-@item @ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Gebruik}}
+@item
+@ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Gebruik}}
 het draaien van alle programma's.
 @details{Gebruik}
 
-@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippers}}
+@item
+@ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippers}}
 handige trucs en tips.
 @details{Snippers}
 
@@ -89,22 +94,27 @@ handige trucs en tips.
 
 @itemize
 
-@item @ref{FAQ}:
+@item
+@ref{FAQ}:
 Veel gestelde vragen.
 
-@item @ref{Top, Web}:
+@item
+@ref{Top, Web}:
 dit document.
 @details{Web}
 
-@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Veranderingen}}
+@item
+@ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Veranderingen}}
 wat is nieuw?
 @details{Veranderingen}
 
-@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Uitbreidingen}}
+@item
+@ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Uitbreidingen}}
 specialistische verfraaiingen (tweaks).
 @details{Uitbreidingen}
 
-@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}}
+@item
+@ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}}
 tweaks-handleiding.
 @details{Internals}
 
@@ -118,16 +128,20 @@ tweaks-handleiding.
 
 @itemize
 
-@item @ref{Vertaald}:
+@item
+@ref{Vertaald}:
 status van de vertaling voor niet-Engelstaligen.
 
-@item @ref{Alles}:
-te downloaden handleidingen en oude handleidingen.
+@item
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippers Repository}:
+voorbeelden door gebruikers, hints en tips.
 
-@item @ref{Development}:
+@item
+@ref{Development}:
 handleidingen voor de ontwikkelversie.
 
-@item @ref{FDL}:
+@item
+@ref{FDL}:
 deze handleidingen zijn uitgegeven onder de GNU Free Documentation
 License (GNU Vrije Documentatie Licentie).
 
@@ -135,6 +149,8 @@ License (GNU Vrije Documentatie Licentie).
 
 @divEnd
 
+@divEnd
+
 
 @divClass{hide}
 @menu
@@ -295,8 +311,8 @@ lectuur indien je een groot project wilt beginnen.
 @docLinks{Gebruik, usage,
   @rprogramnamed{Top,Usage},
   @manualStableUsageSplit,
-  @manualStableUsageBig, 300 KB,
-  @manualStableUsagePdf, 400 KB}
+  @manualStableUsageBig, 400 KB,
+  @manualStableUsagePdf, 600 KB}
 
 @divEnd
 
@@ -591,5 +607,3 @@ en onze redenen om hiervoor te kiezen, wordt gegeven in
 @include fdl.itexi
 
 @divEnd
-
-
index 77c8e9b98fed97a0057a502a7b4d2814f0963b6f..f62b210353465010649453db1dc29bb8f33dfb7e 100644 (file)
@@ -229,11 +229,6 @@ affected by a cross-staff spanner.
 The resulting collisions must be resolved manually, where necessary,
 using the methods in @rlearning{Fixing overlapping notation}.
 
-@knownissues
-Beam collision avoidance does not work for automatic beams that end
-right before a change in staff. To make the latter work, use manual
-beaming.
-
 @seealso
 Learning Manual:
 @rlearning{Fixing overlapping notation}.
@@ -250,6 +245,11 @@ Internals Reference:
 @rinternals{Beam},
 @rinternals{ContextChange}.
 
+@knownissues
+Beam collision avoidance does not work for automatic beams that end
+right before a change in staff. To make the latter work, use manual
+beaming.
+
 
 @node Changing staff automatically
 @unnumberedsubsubsec Changing staff automatically
index f253d35a0df28c057dc07fd5e81635a829fcdaa9..312b1a6eebe986c793c28700500e88546d49b809 100644 (file)
@@ -813,9 +813,14 @@ Internals Reference:
 @knownissues
 
 The relative conversion will not affect @code{\transpose},
-@code{\chordmode} or @code{\relative} sections in its argument.
-To use relative mode within transposed music, an additional
-@code{\relative} must be placed inside @code{\transpose}.
+@code{\chordmode} or @code{\relative} sections in its argument.  To use
+relative mode within transposed music, an additional @code{\relative}
+must be placed inside @code{\transpose}.
+
+Triple accidentals will not be printed if using @code{\transpose}. An
+@q{enharmonically equivalent} pitch will be used instead (e.g. d-flat
+rather than e-triple-flat).
+
 
 @node Inversion
 @unnumberedsubsubsec Inversion
@@ -1152,20 +1157,22 @@ c2 c
 
 Some special purpose clefs are described in @ref{Mensural clefs},
 @ref{Gregorian clefs}, @ref{Default tablatures}, and @ref{Custom
-tablatures}.
+tablatures}.  For mixing different clefs when using cue notes within a
+score, see the @code{\cueClef} and @code{\cueDuringWithClef} functions
+in @ref{Formatting cue notes}.
 
 @snippets
 
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {tweaking-clef-properties.ly}
 
-
 @seealso
 Notation Reference:
 @ref{Mensural clefs},
 @ref{Gregorian clefs},
 @ref{Default tablatures},
-@ref{Custom tablatures}.
+@ref{Custom tablatures},
+@ref{Formatting cue notes}.
 
 Snippets:
 @rlsr{Pitches}.
@@ -1675,10 +1682,10 @@ musicB = {
 
 This rule corresponds to the common practice in the twentieth
 century.  It omits some extra natural signs, which were
-traditionally prefixed to accidentals that reduce or reverse
-the direction of a previous alteration.  The @code{modern} rule
+traditionally prefixed to a sharp following a double sharp,
+or a flat following a double flat.  The @code{modern} rule
 prints the same accidentals as @code{default}, with
-two exceptions that serve to avoid ambiguity: after temporary
+two additions that serve to avoid ambiguity: after temporary
 accidentals, cancellation marks are printed also in the following
 measure (for notes in the same octave) and, in the same measure,
 for notes in other octaves.  Hence the naturals before
index 29b2749b17e5521694a672eaf8849a31796a7035..b59bdbb8e204f55afb11a08934e4c7a31fdb73f2 100644 (file)
@@ -768,39 +768,40 @@ are at the same time differently dotted are not clear.
 @funindex \partcombine
 @funindex partcombine
 
-Automatic part combining is used to merge two parts of music onto
-a staff.  It is aimed at typesetting orchestral scores.  When the
-two parts are identical for a period of time, only one is shown.
-In places where the two parts differ, they are typeset as separate
-voices, and stem directions are set automatically.  Also, solo and
-@notation{a due} parts are identified and marked by default.
+Automatic part combining is used to merge two separate parts of music
+onto a single staff. This can be especially helpful when typesetting
+orchestral scores.  A single @code{Voice} is printed while the two parts
+of music are the same, but in places where they differ, a second
+@code{Voice} is printed.  Stem directions are set up & down accordingly
+while Solo and @notation{a due} parts are also identified and marked
+appropriately.
 
-The syntax for part combining is:
+The syntax for automatic part combining is:
 
 @example
 \partcombine @var{musicexpr1} @var{musicexpr2}
 @end example
 
-The following example demonstrates the basic functionality of the
-part combiner: putting parts on one staff and setting stem
-directions and polyphony.  The same variables are used for the
-independent parts and the combined staff.
+The following example demonstrates the basic functionality, putting
+parts on a single staff as polyphony and setting stem directions
+accordingly.  The same variables are used for the independent parts and
+the combined staff.
 
 @lilypond[quote,verbatim]
 instrumentOne = \relative c' {
-  c4 d e f
-  R1
-  d'4 c b a
-  b4 g2 f4
-  e1
+  c4 d e f |
+  R1 |
+  d'4 c b a |
+  b4 g2 f4 |
+  e1 |
 }
 
 instrumentTwo = \relative g' {
-  R1
-  g4 a b c
-  d c b a
-  g f( e) d
-  e1
+  R1 |
+  g4 a b c |
+  d4 c b a |
+  g4 f( e) d |
+  e1 |
 }
 
 <<
@@ -810,19 +811,19 @@ instrumentTwo = \relative g' {
 >>
 @end lilypond
 
-The notes in the third measure appear only once, although they were
-specified in both parts.  Stem, slur, and tie directions are set
-automatically, depending whether there is a solo or unison.  When
-needed in polyphony situations, the first part (with context called
-@code{one}) always gets up stems, while the second (called @code{two})
-always gets down stems.  In solo situations, the first and second
-parts get marked with @qq{Solo} and @qq{Solo II}, respectively.  The
-unison (@notation{a due}) parts are marked by default with the text
-@qq{a2}.
-
-Both arguments to @code{\partcombine} will be interpreted as
-@code{Voice} contexts.  If using relative octaves,
-@code{\relative} should be specified for both music expressions,
+Both parts have identical notes in the third measure, so only one
+instance of the notes is printed.  Stem, slur, and tie directions are
+set automatically, depending on whether the parts are playing solo or in
+unison.  When needed in polyphony situations, the first part (with
+context called @code{one}) gets @qq{up} stems, while the second (called
+@code{two}) always gets @qq{down} stems.  In solo situations, the first
+and second parts get marked with @qq{Solo} and @qq{Solo II},
+respectively.  The unison (@notation{a due}) parts are marked with the
+text @qq{a2}.
+
+Both arguments to @code{\partcombine} will be interpreted as separate
+@code{Voice} contexts, so if the music is being specified in relative
+mode then @emph{both} parts must contain a @code{\relative} function,
 i.e.,
 
 @example
@@ -832,56 +833,70 @@ i.e.,
 @end example
 
 @noindent
-A @code{\relative} section that is outside of @code{\partcombine}
-has no effect on the pitches of @code{@var{musicexpr1}} and
+A @code{\relative} section that encloses a @code{\partcombine} has no
+effect on the pitches of @code{@var{musicexpr1}} or
 @code{@var{musicexpr2}}.
 
-In professional scores, voices are often kept apart for long periods,
-even if one or two notes actually coincide and could easily be printed
-as unison. Combining notes into a chord, or showing one voice as solo
-is therefore not ideal as the @code{\partcombine} function considers
-each note separately. For this reason, the @code{\partcombine} function
-can be overriden with the following commands:
+@funindex \partcombineChords
+@funindex partcombineChords
+@funindex \partcombineApart
+@funindex partcombineApart
+@funindex \partcombineUnisono
+@funindex partcombineUnisono
+@funindex \partcombineSoloI
+@funindex partcombineSoloI
+@funindex \partcombineSoloII
+@funindex partcombineSoloII
+@funindex \partcombineAutomatic
+@funindex partcombineAutomatic
+
+In professional scores, voices are often kept apart from each other for
+long passages of music even if some of the notes are the same in both
+voices, and could just as easily be printed as unison. Combining notes
+into a chord, or showing one voice as solo is, therefore, not ideal as
+the @code{\partcombine} function considers each note separately. In this
+case the @code{\partcombine} function can be overriden with the
+following commands:
+
+Commands ending in @code{...Once} apply only to the next note in the
+music expression.
 
 @itemize
 @item
-@code{\partcombineApart}, @code{\partcombineApartOnce}:
-Keep the notes as two separate voices, even if they can be combined to a
-chord or unison.
+@code{\partcombineApart} and @code{\partcombineApartOnce} keep the
+notes as two separate voices, even if they can be combined into a chord
+or unison.
 
 @item
-@code{\partcombineChords}, @code{\partcombineChordsOnce}:
-Combine the notes to a chord.
+@code{\partcombineChords} and @code{\partcombineChordsOnce} combine the
+notes into a chord.
 
 @item
-@code{\partcombineUnisono}, @code{\partcombineUnisonoOnce}:
-The two voices are unison.
+@code{\partcombineUnisono} and @code{\partcombineUnisonoOnce} combine
+both voices as @qq{unison}.
 
 @item
-@code{\partcombineSoloI}, @code{\partcombineSoloIOnce}:
-Show only voice one and mark it as solo.
+@code{\partcombineSoloI} and @code{\partcombineSoloIOnce} print only
+voice one, and mark it as a @qq{Solo}.
 
 @item
-@code{\partcombineSoloII}, @code{\partcombineSoloIIOnce}:
-Show only voice two and mark it as solo.
+@code{\partcombineSoloII} or @code{\partcombineSoloIIOnce} print only
+voice two and mark it as a @qq{Solo}.
 
 @item
-@code{\partcombineAutomatic}, @code{\partcombineAutomaticOnce}:
-Ends the effect of the special commands above, and returns to the default
-part combining mechanism.
-
+@code{\partcombineAutomatic} and @code{\partcombineAutomaticOnce} end
+the functions of the commands above, and revert back to the standard
+@code{\partcombine} functionality.
 @end itemize
 
-All commands ending in @code{...Once} apply only to the following note.
-
 @lilypond[quote,verbatim]
 instrumentOne = \relative c' {
   \partcombineApart c2^"apart" e |
-  \partcombineAutomatic e^"auto" e |
-  \partcombineChords e'^"chord" e |
-  \partcombineAutomatic c^"auto" c |
-  \partcombineApart c^"apart" \partcombineChordsOnce e^"chord once" |
-  c c |
+  \partcombineAutomatic e2^"auto" e |
+  \partcombineChords e'2^"chord" e |
+  \partcombineAutomatic c2^"auto" c |
+  \partcombineApart c2^"apart" \partcombineChordsOnce e^"chord once" |
+  c2 c |
 }
 instrumentTwo = \relative c' {
   c2 c |
@@ -924,31 +939,40 @@ Internals Reference:
 @rinternals{PartCombineMusic},
 @rinternals{Voice}.
 
-
 @knownissues
 
-@code{\partcombine} can only accept two voices.
-
-When @code{printPartCombineTexts} is set, if the two voices play
-the same notes on and off, the part combiner may typeset @code{a2}
-more than once in a measure.
-
-@code{\partcombine} cannot be inside @code{\times}.
-
-@code{\partcombine} cannot be inside @code{\relative}.
-
-Internally, the @code{\partcombine} interprets both arguments as
-@code{Voice}s and decides when the parts can be combined.  When they have
-different durations they cannot be combined and are given the names
-@code{one} and @code{two}.  Consequently, if the arguments switch to
-differently named @rinternals{Voice} contexts, the events in those will
-be ignored.  Likewise, partcombining isn't designed to work with lyrics;
-when one of the voices is explicitly named in order to attach lyrics to
-it, the partcombining stops working.
-
-@code{\partcombine} only observes onset times of notes.  It cannot
-determine whether a previously started note is playing or not, leading
-to various problems.
+All @code{\partcombine...} functions can only accept two voices and are
+not designed to work with lyrics; such that when one of the voices is
+explicitly named in order to attach lyrics to it, the partcombiner will
+stop working.
+
+@code{\partcombine...} functions cannot be placed inside a @code{\times}
+or @code{\relative} block.
+
+If @code{printPartCombineTexts} is set and the two voices play the same
+notes @qq{on and off}, in the same measure, the part combiner may
+typeset @code{a2} more than once in that measure.
+
+@code{\partcombine} only knows when a note starts in a @code{Voice}; it
+cannot, for example, remember if a note in one @code{Voice} has already
+started when combining notes that have just started in the other
+@code{Voice}.  This can lead to a number of unexpected issues including
+@qq{Solo} or @qq{Unison} marks being printed incorrectly.
+
+@code{\partcombine} keeps all spanners (slurs, ties, hairpins etc.) in
+the same @code{Voice} so that if any such spanners start or end in a
+different @code{Voice}, they may not be printed properly or at all.
+
+If the @code{\partcombine} function cannot combine both music
+expressions (i.e. when both voices have different durations), it will
+give the voices, internally, its own custom names: @code{one} and
+@code{two} respectively.  This means if there is any @qq{switch} to a
+differently named @code{Voice} context, the events in that differently
+named @code{Voice} will be ignored.
+
+Refer also to @emph{Known issues and warnings} when using
+@code{\partcombine} with tablature in @ref{Default tablatures} and the
+@emph{Note} in @ref{Automatic beams} when using automatic beaming.
 
 
 @node Writing music in parallel
index a257d73afb0e248c2065ce6945f978b88ebdd764..5344ab2b866ba8181d93084f9df01c385740487b 100644 (file)
@@ -1113,6 +1113,16 @@ oboeNotes = \relative c'' {
 }
 @end lilypond
 
+@cindex note-event
+@cindex articulation-event
+@cindex dynamic-event
+@cindex rest-event
+@cindex slur-event
+@cindex crescendo-event
+
+@funindex quotedEventTypes
+@funindex quotedCueEventTypes
+
 By default quoted music will include all articulations, dynamics,
 markups, etc., in the quoted expression.  It is possible to choose which
 of these objects from the quoted music are displayed by using the
@@ -1144,23 +1154,6 @@ oboeNotes = \relative c'' {
 
 Quotes can also be tagged, see @ref{Using tags}.
 
-@snippets
-
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
-{quoting-another-voice-with-transposition.ly}
-
-@cindex note-event
-@cindex articulation-event
-@cindex dynamic-event
-@cindex rest-event
-
-@funindex quotedEventTypes
-@funindex quotedCueEventTypes
-
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
-{quoting-another-voice.ly}
-
-
 @seealso
 Notation Reference:
 @ref{Instrument transpositions},
@@ -1179,68 +1172,123 @@ Installed Files:
 
 
 @knownissues
-
 Only the contents of the first @code{Voice} occurring in an
-@code{\addQuote} command will be considered for quotation, so
-@code{@var{music}} cannot contain @code{\new} and
-@code{\context Voice} statements that would switch to a different
-Voice.
-
-Quoting grace notes is broken and can even cause LilyPond to
-crash.
-
-Quoting nested triplets may result in poor notation.
-
-In earlier versions of LilyPond (pre 2.11), @code{addQuote} was
-written entirely in lower-case letters: @code{\addquote}.
+@code{\addQuote} command will be considered for quotation, so the music
+expression must not contain @code{\new} and @code{\context Voice}
+statements which would switch to a different Voice.  Quoting grace notes
+is unsupported and may cause LilyPond to crash whereas quoting nested
+triplets may result in poor notation.
 
 
 @node Formatting cue notes
 @unnumberedsubsubsec Formatting cue notes
 
-@cindex cues
 @cindex cue notes
-@cindex cue notes, formatting
 @cindex fragments
-@cindex quoting other voices
-@cindex cues, formatting
+@cindex cue notes, formatting
+@cindex formatting, cue notes
+@cindex voices, quoting
+
 
 @funindex \cueDuring
 @funindex cueDuring
+@funindex \cueClef
+@funindex cueClef
 @funindex \cueDuringWithClef
 @funindex cueDuringWithClef
 @funindex \quoteDuring
 @funindex quoteDuring
 
-The previous section explains how to create quotations.  The
-@code{\cueDuring} command is a more specialized form of
-@code{\quoteDuring}, being particularly useful for inserting cue
-notes into a part.  The syntax is as follows:
+@cindex notes, smaller
+@cindex smaller notes
+@cindex CueVoice
+
+The simplest way to format cue notes is to explicitly create a
+@code{CueVoice} context within the part.
+
+@lilypond[verbatim,relative=1]
+R1
+<<
+  { e2\rest r4. e8 }
+  \new CueVoice {
+    \stemUp d'8^"flute" c d e fis2
+  }
+>>
+d,4 r a r
+@end lilypond
+
+The @code{\cueClef} command can also be used with an explict
+@code{CueVoice} context if a change of clef is required and will print
+an appropriately sized clef for the cue notes.  The @code{\cueClefUnset}
+command can then be used to switch back to the original clef, again with
+an appropriately sized clef.
+
+@lilypond[verbatim,noragged-right,relative=1]
+\clef "bass"
+R1
+<<
+  { e2\rest r4. \cueClefUnset e,8 }
+  \new CueVoice {
+    \cueClef "treble" \stemUp d''8^"flute" c d e fis2
+  }
+>>
+d,,4 r a r
+@end lilypond
+
+The @code{\cueClef} and @code{\cueClefUnset} command can also be used
+without a @code{CueVoice} if required.
+
+@lilypond[verbatim,noragged-right,relative=1]
+\clef "bass"
+R1
+\cueClef "treble"
+d'8^"flute" c d e fis2
+\cueClefUnset
+d,,4 r a r
+@end lilypond
+
+For more complex cue note placement, e.g including transposition, or
+inserting cue notes from multiple music sources the @code{\cueDuring} or
+@code{\cueDuringWithClef} commands can be used.  These are more
+specialized form of @code{\quoteDuring}, see @ref{Quoting other voices}
+in the previous section.
+
+The syntax is:
 
 @example
-\cueDuring #@var{partname} #@var{voice} @var{music}
+\cueDuring #@var{quotename} #@var{direction} #@var{music}
 @end example
 
-This command copies only the notes and rests from the
-corresponding measures from @code{@var{partname}} into a
-@code{CueVoice} context.  The @code{CueVoice} is created
-implicitly, and occurs simultaneously with @code{@var{music}},
-which creates a polyphonic situation.  The @code{@var{voice}}
-argument determines whether the cue notes should be notated as a
-first or second voice; @code{UP} corresponds to the first voice,
-and @code{DOWN} corresponds to the second.
+and
+
+@example
+\cueDuringWithClef #@var{quotename} #@var{direction} #@var{clef} #@var{music}
+@end example
+
+The music from the corresponding measures of the @code{@var{quote name}}
+is added as a @code{CueVoice} context and occurs simultaneously with the
+@code{@var{music}}, which then creates a polyphonic situation.  The
+@code{@var{direction}} takes the argument @code{UP} or @code{DOWN}, and
+corresponds to the first and second voices respectively, determining how
+the cue notes are printed in relation to the other voice.
 
 @lilypond[verbatim,quote]
-oboe = \relative c'' {
-  r2 r8 d16(\f f e g f a)
-  g8 g16 g g2.
+fluteNotes = \relative c'' {
+  r2. c4 | d8 c d e fis2 | g2 d |
 }
-\addQuote "oboe" { \oboe }
 
-\new Voice \relative c'' {
-  \cueDuring #"oboe" #UP { R1 }
+oboeNotes = \relative c'' {
+  R1
+  s1*0^\markup { \tiny "flute" }
+  \cueDuring #"flute" #UP { R1 }
   g2 c,
 }
+
+\addQuote "flute" { \fluteNotes }
+
+\new Staff {
+  \oboeNotes
+}
 @end lilypond
 
 @noindent
@@ -1280,6 +1328,7 @@ notes.
 fluteNotes = \relative c'' {
   r2. c4 d8 c d e fis2 g2 d2
 }
+
 bassoonNotes = \relative c {
   \clef bass
   R1
@@ -1289,7 +1338,9 @@ bassoonNotes = \relative c {
   \clef bass
   g4. b8 d2
 }
+
 \addQuote "flute" { \fluteNotes }
+
 \new Staff {
   \bassoonNotes
 }
@@ -1304,6 +1355,7 @@ print the original clef once the cue notes have finished.
 fluteNotes = \relative c'' {
   r2. c4 d8 c d e fis2 g2 d2
 }
+
 bassoonNotes = \relative c {
   \clef bass
   R1
@@ -1311,7 +1363,9 @@ bassoonNotes = \relative c {
   \cueDuringWithClef #"flute" #UP #"treble" { R1 }
   g4. b8 d2
 }
+
 \addQuote "flute" { \fluteNotes }
+
 \new Staff {
   \bassoonNotes
 }
@@ -1338,6 +1392,7 @@ piccoloNotes = \relative c''' {
   c8 c c e g2
   c4 g g2
 }
+
 bassClarinetNotes = \relative c' {
   \key d \major
   \transposition bes,
@@ -1354,33 +1409,13 @@ bassClarinetNotes = \relative c' {
 >>
 @end lilypond
 
-@cindex notes, smaller
-@cindex smaller notes
-
-A @code{CueVoice} context may be created explicitly if notes of a
-smaller size are required, for example to set an alternative
-sequence of notes more suitable for a higher or lower voice.
-
-@lilypond[verbatim,relative=2]
-\time 12/8
-\key ees \major
-g4 ees8 f4 g8
-\stemDown
-<<
-  { d4. bes4 c8 }
-  \new CueVoice
-  { g'4. f4 ees8 }
->>
-\stemUp
-d2. d2.
-@end lilypond
-
-@cindex removing cues
 @cindex removing cue notes
 @cindex cue notes, removing
 
 @funindex \killCues
 @funindex killCues
+@funindex \addInstrumentDefinition
+@funindex addInstrumentDefinition
 
 The @code{\killCues} command removes cue notes from a music
 expression, so the same music expression can be used to produce
@@ -1394,6 +1429,7 @@ tagged for selective inclusion in the score; see @ref{Using tags}.
 fluteNotes = \relative c'' {
   r2. c4 d8 c d e fis2 g2 d2
 }
+
 bassoonNotes = \relative c {
   \clef bass
   R1
@@ -1405,11 +1441,13 @@ bassoonNotes = \relative c {
   \tag #'part \clef bass
   g4. b8 d2
 }
+
 \addQuote "flute" { \fluteNotes }
 
 \new Staff {
   \bassoonNotes
 }
+
 \new StaffGroup <<
   \new Staff {
     \fluteNotes
@@ -1422,14 +1460,15 @@ bassoonNotes = \relative c {
 
 Alternatively, Clef changes and instrument labels can be
 collected into an instrument definition for repeated use, using
-@code{\addInstrumentDefinition} described in
-@ref{Instrument names}.
+@code{\addInstrumentDefinition} described in @ref{Instrument names}.
 
 
 @seealso
 Notation Reference:
+@ref{Quoting other voices},
 @ref{Instrument transpositions},
 @ref{Instrument names},
+@ref{Clef},
 @ref{Musical cues},
 @ref{Using tags}.
 
index fe6dc27184fb8fd6d206f6653538031f60b45896..f37ea9a95b8ee1d85b084da1ec0cee294d3efc56 100644 (file)
Binary files a/Documentation/pictures/Learning_Macos_welcome.png and b/Documentation/pictures/Learning_Macos_welcome.png differ
index 91c00a90d1d633eddaf13c5f2244ff670cd9532f..b80f64472949b3935b050426bb98ec37c74292af 100644 (file)
@@ -4,12 +4,12 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los símbolos específicos de acordeón discanto se escriben mediante
 @code{\\markup}.  Se puede trucar la colocación vertical de los
index 30e02ef9b7106ac06408e88bc827a50a73c3de19..c814dec1d43948b6c7ba145b4a09d42b48b08855 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Al escribir un bajo cifrado, podemos situar las cifras encima o debajo
index 2be77d9d2a4e9312cea7c9c275f9c30cf31dcd77..3a426b13c8d95bf7c54d30c117c2b01f90ad6500 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, staff-notation, vocal-music"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Añadir un ámbito por voz"
   texidoces = "
 Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
index f793d38bf40792ad89877c8356ea1e24236e8898..bd4f6f5fc87d2f698e531041ebb09c8730a37010 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, breaks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al añadir un pentagrama nuevo en un salto de línea, por desgracia
 se añade un espacio adicional al final de la línea antes del salto
index 3511d9e44aae6c09d8a6c170412f52ee77c59232..a619f07d8f8a001d9781f3145c7958ff5d793a6c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede añadir (posiblemente de forma temporal) un pentagrama
 nuevo una vez que la pieza ha comenzado.
index e7510216ab4ddde585ba753f84e4eaa571077ed9..2f9a611f7221c46973b0a388a3fb68a2c3b2bb9b 100644 (file)
@@ -4,12 +4,12 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para añadir indicaciones de línea divisoria dentro del contexto de
 los nombres de acorde @code{ChordNames}, incluya el grabador
index 06182e9bdee6417e0fbeada8d4785d23ac26bfed..9a020117ac71b9ccef956c16a7feb8da61c37d33 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La sintaxis de LilyPond puede implicar muchas colocaciones poco
 comunes para los paréntesis, corchetes, etc, que a veces se tienen
index e38d9ea0d3a479fb69fa9701d5ef9e9edd175963..bbcfee353afc34ff4a84c38866c1c9f27222ca29 100644 (file)
@@ -4,12 +4,12 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "rhythms, percussion"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Mediante la utilización de las potentes herramientas preconfiguradas
 como la función @code{\\drummode} y el contexto @code{DrumStaff}, la
index 5730e779b463664320db8fc457ddf0a53822212b..5ecb570e7a1671eb7a70567adf0698d60e69a79d 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para añadir digitaciones a las tablaturas, utilice una combinación de
 @code{\\markup} y @code{\\finger}.
index e2c62cd2507229b8fb12e2ef243b26e15556fca3..5749977d07af4aa22281d674dd43a0d2b49c6019 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "staff-notation, vocal-music"
index 8dd93950a06545cb8b8774cd8bca0153ffdd25bc..e1c2d865f4d69fea3147da747de5db791bde7d88 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, vocal-music"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
    Este ejemplo muestra una forma de simplificar la adición de muchas
index e824c4eb4908a43c1a2b9323097cf7b048023884..3d9ff364df429485be168dc7c3e2cd65981f25d7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La función @code{\\parenthesize} es un truco especial que encierra
 objetos entre paréntesis.  El grob asociado es @code{ParenthesesItem}.
index ad2442e689f1f54916d3d3c5853514f940dc8945..59ffd8753c68795b8a73842566689e09bb9227ed 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, titles"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Con algo de código de Scheme, se puede añadir fácilmente la fecha
 actual a una partitura.
index 17226dfcf4b3bd6de6a93ca7dc4e8a679018df08..41c8a80c27723ca95940f9dfd043826b4b2a22ff 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El grabador @code{Volta_engraver} reside de forma predeterminada
 dentro del contexto de @code{Score}, y los corchetes de la repetición
index 5c5b42137b0dee8bb35c150e033ee6208ee3f42b..e8eb502cfad58d00456533d9d004048f21a2b45f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Voces adicionales para evitar colisiones"
  texidoces = "
 En ciertos casos de polifonía compleja, se necesitan voces adicionales
index bb00dd55e064a4daa38d6b904d7813607b5ad999..693b47c48c97b23310d55605b0b87da81a6c5512 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede ajustar la separación entre las notas de adorno utilizando la
 propiedad @code{spacing-increment} de @code{Score.GraceSpacing}.
index 0099b3d77ab9dd01b57f7960b85fbc1ddc2b5ba3..719edcd8509dfaf923784c499e055f526c3c6c25 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.42
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código muestra cómo situar la línea de base de la
 letra más cerca del pentagrama.
index d900962a1162a857e9a14334231b6ed543f4c4dc..bea2dfe5624ac02c12a7e87edddcb73bfdf5d008 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Puede ser necesario trucar la propiedad
 @code{shortest-duration-space} para poder ajustar el tamaño de las
index 6aca7a85710cf2e226c64a3ef7b5ca6d85279d0a..678c12df150a0d1aa4b58394394706db7886c3d7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, paper-and-layout, titles"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La alineación horizontal de los nombres de instrumento se puede
 trucar modificando la propiedad @code{Staff.InstrumentName
index 1019edc5590f33f8e944b8951221113f8e1388e6..2e3865542926770fa5f2110eb0111fb1286dc17a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los números de compás se alinean de forma predeterminada por la
index 0b5048bd4ab715422557c29c48f4489158dd01e2..85ee5dce1fe17a1aab3e9a0839cad50a79ed122b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si están especificadas, las marcas de texto se pueden alinear con
 objetos de notación distintos a las líneas divisorias.  Entre estos
index 388b174117238e2ccb9df652f86419e369080736..3692a310309952afe4be2a3d8bd111e41ae12f22 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, fretted-strings, spacing"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Las cifras de digitación orientadas verticalmente se colocan de forma
index a93648ad8993692c34e09197ec5e11c1ba1731db..02406380d3bebfe9468f5017a47f865775656007 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede variar la longitud de las plicas de las figuras unidas por
 una barra mediante la sobreescritura de la propiedad
index 33edc27728d2bcd82fbccb08effc018cd3477f0f..4face77811e6bd08a39cc7188ab1abad4c85c1bf 100644 (file)
@@ -4,6 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \header {
 
index c3b3e576c869a3646dfac206cb92c4a2a94fb265..1d4433234753964382cc427471397ca1d11a9ba1 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, vocal-music"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Ámbitos con varias voces"
   texidoces = "
 La adición del grabador @code{Ambitus_engraver} al contexto de
index 433839cd8f2cb4fbd47da5df300c046cd68f3d15..75aa9b1a19aec4e1b87c19fcbb0c70d8082273f2 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada se añaden corchetes de análisis sencillos
 debajo del pentagrama.  El ejemplo siguiente muestra una manera de
index bc94b4c191ed3bb6c366087deca29e0b97e69b6b..9af86f0ff48bc5989d211f8f15026c156c377cd3 100644 (file)
@@ -4,12 +4,12 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aquí se muestran muchos de (¿o quizá todos?) los símbolos que
 están contemplados por la capacidad de LilyPond para la música
index bdc2b4ea1d2a5e41f1d5aff6fbf028d79e10b684..dc9cc0c34bf902ec63448d6504b4049333e4766f 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 #(set-global-staff-size 15)
index 73e2054107d5213afac9130f3b79a2b7c31434d5..37037111bc000787fdd1e435ef373bd4990ccd20 100644 (file)
@@ -7,9 +7,22 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo esempio mostra come realizzare una trascrizione moderna di musica
+gregoriana. La musica gregoriana non presenta suddivisione in misure né gambi;
+utilizza soltanto le teste della minima e della semiminima, e dei segni
+appositi che indicano pause di diversa lunghezza.
+
+"
+  doctitleit = "Modello per notazione antica -- trascrizione moderna di musica gregoriana"
+
   lsrtags = "vocal-music, ancient-notation, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este ejemplo muestra cómo hacer una transcripción moderna de canto
 gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza
index da43430d6a4f2154451ad30121b8e92f9f9ce76f..df5e844eb1e1c97992b8e0eea95e90b99bf91334 100644 (file)
@@ -7,9 +7,25 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Quando si trascrive musica mensurale, può essere utile inserire all'inizio del
+pezzo un incipit che indichi l'intonazione e il tempo originali. Le stanghette
+di battuta, a cui i musicisti di oggi sono abituati e che aiutano a riconoscere
+più velocemente gli schemi ritmici, durante l'epoca della musica mensurale non
+erano ancora state introdotte; infatti il metro cambiava spesso ogni poche
+note.  Come compromesso, le stanghette vengono spesso inserite tra i righi
+invece che al loro interno.
+
+"
+  doctitleit = "Modello per notazione antica -- trascrizione moderna di musica mensurale"
+
   lsrtags = "ancient-notation, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al transcribir música mensural, es útil un «incipit» al compienzo
 de la pieza para indicar la tonalidad y el tempo
index b5c86da5dbac9daf5126be09217f03189c779336..746ab81e68786441eb92e27a185bbff774b97dab 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las indicaciones de compás también se pueden grabar en estilo antiguo.
 
index 93bfebb9e4e15d8c5a6bdf853d918d857cf54db6..f3a01a7cc8a6961897c478a3a34c13e7f0ff6cc2 100644 (file)
@@ -7,8 +7,21 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo modello presenta un modo di impostare un salmo anglicano.  Mostra
+anche come le strofe possono essere aggiunte come testo separato al di sotto
+della musica.  Le due strofe sono scritte con stili diversi per illustrare
+le varie possibilità.
+
+"
+  doctitleit = "Modello per salmo anglicano"
+
   lsrtags = "vocal-music, template"
 
+
+
+
 %% Translation of GIT committish: 144cd434d02e6d90b2fb738eeee99119a7c5e1d2
 
   texidocde = "
index b69395ac074953e2e14174156b7b34a93332fc13..bdc7c542191991f8c6148f55f72315197103aaf0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, editorial-annotations"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Aplicar estilos de cabeza según la nota de la escala"
   texidoces = "
 La propiedad @code{shapeNoteStyles} se puede usar para definir varios
index 3b010f6e7c5fd51f1b37592553f61ff19ca0b6c7..e3c7d916374dc29dd1194bc6b055bc7ec37591b0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "world-music"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para las improvisaciones o @emph{taqasim} que son libres durante unos
 momentos, se puede omitir la indicación de compás y se puede usar
index 49adb59f2766365901bd3e2eee2b77ec7b7500d8..af401ccd8d4fdd1c6a748812e076894f25dab1eb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede hacer que una ligadura de expresión sea asimétrica para
 adaptarse mejor a un patrón asimétrico de notas.
index 4557f3ac2cae2f549607f079aa646ba4e7bce6d1..07e85822dc369ca655317ba930c600c87bb7ef96 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden subdividir las barras automáticamente.  Estableciendo la
 propiedad @code{subdivideBeams}, las barras se subdividen en
index 7b91ba0b1aeb40d43712de605946415159bd014a..2e01a839567b5c6fa2ea5cf5422cca98bb358f14 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, editorial-annotations, chords, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 6974a8d9cf9927458156770b4d5b4cdb32919428..414fac1bb707b822dcaf24cd80649aad913a6b0c 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las reglas de final de barra especificadas en el contexto
 @code{Score} se aplican a todos los pentagramas, pero se pueden
index 3501ea1e72541612cedd47a1a7531408cd8f5f39..4fb1bbcc351b53e7e4d4d10fc96aa2d318f4aa36 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 No está especificada ninguna agrupación predeterminada automática
 de las barras para el compás de 7/8, de forma que si se requieren
index 2ef7888302befef6c7b4edd15a0a7024af973f91..03c63ea2ca6f73ef3a01932c6d0124504442a0e0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Normalmente están prohibidos los saltos de línea si las barras
 atraviesan las líneas divisorias.  Se puede cambiar este
index fc8bb85308b012895495a302a41be2a2391e0306..d807e6c1e06c53e389eca3fe1d22e8beed4077b0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La instrucción @code{\\whiteout} intercala un rectángulo blanco
 debajo de un elemento de marcado.  Este rectángulo blanco no tapa
index e3fb13736ccd1a807a8855c64fbcfb0439b5ad53..ee3506f1988bf3962fd56f7cfd4526f8eb84a4ea 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para hacer invisibles partes de un regulador de crescendo, se usa
 el método de dibujar un rectángulo blanco encima de la parte
index 064c04eeb5c2dfcdfc47f41c37808c54662156d7..f70e7b15352435d99d28ee5c78afccb449940745 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 A veces se denota una «cesura» mediante una doble marca de respiración
 parecida a las vías del tren, con un calderón encima. Este fragmento
index 9e145ee82d68975ef4c2c8d551b0c33755bf179d..04739dc1fa7b4394aeb0bbd8119b73de491d6615 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este ejemplo proporciona una función para tipografiar un regulador con
 texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra
index 900e963fde8fd82056d36ae24f6d3720cda9e80d..ce227d016e6e8db91ea27efda9f4283d922dfb65 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
index 76476e6fa095ea3354114c04cc79df6bdfec6dd1..cf0f664d5a86dce944171d2ba5dc0d9a3cd82a64 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, unfretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para hacer más pequeño el círculo de @code{\\flageolet} (armónico)
 utilice la siguiente función de Scheme.
index c8e65317b17babbc19016aa6264a0136d9dc8367..ccda4003e3b92217c935e24b4aa2dd3fe0a1ba18 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden modificar notas individuales de un acorde con la instrucción
 @code{\\tweak}, alterando la propiedad @code{font-size}.
index 83e0e1c604d9d5e21fc38e9a012a6e2607e5cd23..fa4236a2fa5049aa19123a0bb37f9d08f10f3b91 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se insertan automáticamente barras en ángulo cuando se detecta un
 intervalo muy grande entre las notas.  Se puede hacer un ajuste
index 4f54a5b98f25e2aefc67e86696f05510d5bbfa3d..abe5168879c1ac5e3ec7af80acb63d19df45dab3 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede establecer el separador entre las distintas partes del
 nombre de un acorde para que sea cualquier elemento de marcado.
index bbfc64bf4ea57d343a37adbc56bd1c8e211ac651..d70f41ee9fe22a068afc6bda80f2c2ec0a5acf9b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Cambiar la forma de los silencios multicompás"
  texidoces = "
 Si hay diez compases de silencio o menos, se imprime en el pentagrama
index 30fa6208e826b43dca0b080b9087d160619b0f60..973b68da071fb4f0d50c8d69223aacb5c98a9aec 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index e1f76eb85ff8303338bea812f97bb6ed77157454..d1fac5e770142ee07cb92fa0287a5e205b810e1a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "contexts-and-engravers, midi"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al producir una salida MIDI, el comportamiento predeterminado es que
 cada pentagrama representa un canal MIDI, con todas las voces de dicho
index d6e94dffc4fecb5ec5c0f9732ad7eeb9a9c88953..e98099f9bb5c6739c69c1e1b4751e4dec1204df0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al utilizar la posibilidad de combinación automática de partes, se
 puede modificar el texto que se imprime para las secciones de solo
index d3582a9e1fe33a4d304ac15e1ac9fc7a868ba78a..98863ae7391c351608c9a6ed60434ea454dbc9ce 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede modificar el texto empleado para los crescendos y
 decrescendos modificando las propiedades de contexto
index b976f05846b4267bc3bf8f5dabe798f3d76dc292..16620f75b2ee1d3f012929aa3e6502b015df653b 100644 (file)
@@ -4,10 +4,10 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Es posible ajustar la separación en las indicaciones de tesitura.
index b5f9f5b79f32ace499478d4d187f2eed7fca4c6f..dd0eee12b1180300ea126a92bfcba72248eb309c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede cambiar el aspecto de las ligaduras de expresión de
 continuas a punteadas o intermitentes.
index 8b8cfbf35d10e25e9724dcbd60b1879dd72317bc..6347d46bd745517ef65dab9ffc64972dc1043370 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El glifo de la marca de respiración se puede ajustar
 sobreescribiendo la propiedad de texto del objeto de presentación
index 5952ff436c08f2c9f15387ac6d5918a20dde627b..5e6cb2ba3fee658cbf46e16d43b732d08eaf5e16 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La nomenclatura inglesa (predeterminada) para los acordes del cifrado
 americano se puede cambiar por la alemana (@code{\\germanChords}
index 97bf3fb6d4fef84635f6c3389e9b4b28d6c55ac9..df8bd3721f625f130e130d1d67bc8012779150fe 100644 (file)
@@ -4,10 +4,10 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Este código muestra cómo cambiar la cantidad de puntillos de una nota.
index 1c5dacb70211b3b2f09feabccb874d81013cea83..f9faa4063083c89f739e1548195a5975a9da7c2a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las alteraciones y los signos «más» pueden aparecer antes o
 después de los números, según el valor de las propiedades
index e2b1d35b129e620e8088083be4a53a786f0fc3cb..14a5bfe01a557c410321e90e4c4d9c464619e9dc 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%%%    Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index cf8d7e6e823ff3509094fbaa538746baf7546f50..6b87cacdb3971f1a8ae05de6257f2028a0d0e601 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides, midi"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para cambiar el tempo en la salida MIDI sin
 imprimir nada, hacemos invisible la indicación metronómica:
index 47c7b316205127bcf058f0ab1c450e1e0c06b31f..c24ffc2719d939906d7ba09a68e719f8f251ff8d 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "keyboards, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de
 las indicaciones de pisar pedal y levantar pedal.  Observe que las
index cae0934ca59b126008c43e2282c43f3bf9f500ef..5bf944273fed5f47b3f2660586116926792c50f9 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La instrucción @code{\\time} establece las propiedades
 @code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y
index 12d8dd36b7ea5e69034d3e34f5f09f5f9413e7f8..3dd879bef8f3533d91438e96ba6166b262581f71 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Cambiar el número del grupo especial"
  texidoces = "
 
index ed1d6b57256b386f8eaca1bc8ae731d280a919db..ff0d71f297feee9d1e02dfa8bc230e5b0c0523f6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La propiedad @code{measureLength}, junto con
 @code{measurePosition}, determina cuándo es necesario dibujar una
index 8cf1e9d13b664f872f1d33b7f76067bbef995d7f..b740e3ba3766aa0871a60b4f6995a4a7edd1ccbc 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este tipo de notación se utiliza para el canto de los Salmos, en
 que las estrofas no siempre tienen la misma longitud.
index 37fa5e616f7baf5c4370a82728867b33d996061e..94bcb6af5adc923896ce18067d0080a6e72f6ff3 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.53
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Los deslizamientos para acordes se pueden indicar tanto en el contexto
index 68c0b20454a59604e6b437764b595d766161ad5f..9a32fbdc7e5b0d5f7d3959fe5dfc8ef38acb33c9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar la propiedad @code{chordNameExceptions} para
 almacenar una lista de notaciones espaciales para acordes
index aa8768f9c1f3595c8e86cad209f94b74af0856a1..0ffcc288e5751906ce96a4607117d2b77aa453de 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La presentación del acorde de séptima mayor se
 puede ajustar mediante majorSevenSymbol.
index 98e7f6faa65fb6cd3003418b6bd6fe5f483a7635..0665939afb3158774e7a6fa8ff2c1df8d112edb9 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede hacer que los diagramas de posiciones se muestren sólo
 cuando el acorde cambia o al comienzo de una nueva línea.
index b399d18c1d3f5f4f43f40464a86939f8f24636e9..fea2567b950f0518802356702ef79a16a94c3e22 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 #(set-global-staff-size 15)
 \paper {
index 0749eb969e38abefd425177a825fd1e19ead4255..86bdaefd0ebb642e137097991c42b71d5c2c1774 100644 (file)
@@ -9,6 +9,7 @@ chord-name-exceptions.ly
 chord-name-major7.ly
 clusters.ly
 controlling-the-placement-of-chord-fingerings.ly
+cross-staff-chords---beaming-problems-workaround.ly
 displaying-complex-chords.ly
 manually-break-figured-bass-extenders-for-only-some-numbers.ly
 showing-chords-at-changes.ly
index 4e0497f7cb26e426bf7df1072fff628e3ee89b39..35134c6dc5ba63e9da7402365bbaf1eb1de72777 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este código muestra cómo recortar (extraer) fragmentos a partir de una
 partitura completa.
index 2290fd8898ec926e771792887d8bf52fd66cec70..fc7f5e2206885ee9a07387750fc491fd8fe2d414 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, chords, keyboards"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los «clusters» o racimos son un mecanismo para indicar la
 interpretación de un ámbito de notas al mismo tiempo.
index 5c7bc61b02882ac2911681a9bfd9bfcd7d4760c2..6b760f5931fe6a77d958e0924e05b2bc7ea79119 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più
 forte} o @qq{piano subito}). Se pueden producir usando un bloque
index aab3541e73f74c4a842b54a9b00c20d32178d97d..dd6ecb805b3cfebc9b2fb54478a3e0c59506e81b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 La herramienta de combinación de partes (instrucción
index ae8cceb7ad795fc43de0f87d1bac52822ac3785d..27b618f2e8185a83293477426362000821d48aee 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Indicaciones de compases compuestos"
  texidoces = "
 Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden
index 2aca634c7c8e36783aef42f73dfc40cbc3773a28..4a404cdc6304c83e96362411f77bab9f4a4d18cb 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La agrupación de pulsos dentro de un compás está controlada por la
 propiedad de contexto @code{beatStructure}.  Hay establecidos valores
index 19b3dc97ed32e8c02b632ede624b6229e6a709ba..702e545a847e55f26989cee037581c8eb80dce74 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede tipografiar un gissando contemporáneo sin nota final
 utilizando una nota oculta y temporalización de cadenza.
index 5002a5668403e73d57888af2f052875ef5e7eafc..3a8dee79c46962bfb64c57e0abea5c6ea5dc9caa 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 La visibilidad de los objetos de extensión que acaban en la primera
index c94ae6523772b7ad3c36f3b52400d7923edc87a9..63a9565269eb05e281fcd3aae8eb84603f827cbf 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, chords, keyboards, fretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede controlar con precisión la colocación de los números de
 digitación.  Para que se tenga en cuenta la orientación de las
index 983da1496805521c49bd0f0091de01beca50dc28..c7d4c07d2fcda72a695c4f19ddf85780995298d3 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El orden vertical que ocupan las inscripciones gráficas está
 controlado con la propiedad @code{'script-priority}. Cuanto más
index 2ed35c026ed53cd8da7f68ae32787e388fc818c9..d8a0ff2418530088bbe6be97c30d611903c48292 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 El comportamiento predeterminado de la visibilidad de los corchetes de
index 56e9ada6c18761e76a0e7d1227d224e44601155b..7276937ebbedf00a659dcc0ffe92905a4c3c40db 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 texidoces = "
 La creación de un grupeto circular de anticipación entre dos notas,
 donde la nota inferior del grupeto utiliza una alteración, requiere
index 07e793e7bfe6d1050f45d6fc4d8296575cd418f3..63b038ca8fd7205a05b4380caf5da9981a7a210e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En una música que tenga muchas apariciones de la
 misma secuencia de notas a distintas alturas, podría ser de
index ebb3258ace461b84fc6e489c700dbef9c1918117..555c26e5227dc0c120bdd8779e61b75ee1240951 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede trazar un símbolo de arpegio entre notas de distintas
 voces que están sobre el mismo pentagrama si el grabador
index 9cec1e3505c7794254afdf2f8b9fc7f39fa3f30a..6e2bdd8bc29ca7f540910f90b71762407a7f3d41 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para crear pentagramas en blanco, genere compases vacíos y después
 elimine el grabador de números de compás @code{Bar_number_engraver}
index 2f11ee6e8fa6f25b19766535567c58934fbe36f0..589d320d1f26e5b8b31c9da74b075545956f4dd6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
 cruce entre los pentagramas ajustando la propiedad
index 1a4313bd2d62069d1b42fe908d90206b840178ee..bc525cada2f4a1698cb43123af0a7cac3fb7b405 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden crear arpegios que se cruzan entre pentagramas dentro de
 contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
index e36819c6423b2f11cb8a7f310729e037412b3f53..f86634bbbaea0a2e1bdf338ccfdb5c7daffd3099 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.12.2"
+\version "2.14.0"
 
 \header {
   lsrtags = "expressive-marks, staff-notation, editorial-annotations, tweaks-and-overrides"
index ac55db6a4bbb8edd9097791cb1b0b30e85159ddd..5f7f1f0d9042f45dff7831a1bd11447e7179b4e9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden crear indicaciones metronómicas nuevas en modo de
 marcado, pero no cambian el tempo en la salida MIDI.
index 6b71412ecc134de8d6da7a068dcfef2114979550..c09e4947dbffc1f90476b16da9fbbafab46317d3 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aunque la manera más fácil de añadir paréntesis a una indicación
 de dinámica es utilizar un bloque @code{\\markup}, este método
index b49ce55e7c280144d4bd5e7ddb458f9f39eb9e61..227902a5851acfdcc29cbbe9d4ba0e26648d4366 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 A diferencia de las inscripciones de texto, las lestras de ensayo
 no se pueden apilar en un punto concreto de la partitura: sólo se
index 10fd288511d417146d4c5a45c7d05b450fa145af..30ef2d93ea1af7425be5981c487f22f9bebba9df 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, keyboards, unfretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En determinadas situaciones es necesario crear ligaduras de
 expresión entre notas que están en voces distintas.
index c4cff6913262b57ccd94c736cc5cca25cfee3153..d2720b18fcf3f9071f6c0e2199aabd6963af4e74 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan}
 permiten la creación de elementos de extensión textuales tan
diff --git a/Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly b/Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly
new file mode 100644 (file)
index 0000000..b01a0ad
--- /dev/null
@@ -0,0 +1,50 @@
+%% 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.14.0"
+
+\header {
+  lsrtags = "chords, keyboards, tweaks-and-overrides"
+
+  texidoc = "
+Sometimes it is better to use stems from the upper staff for creating
+cross-staff chords, because no problems with automatic beam collision
+avoidance then arise.  If the stems from the lower staff were used in
+the following example, it would be necessary to change the automatic
+beam collision avoidance settings so that it doesn't detect collisions
+between staves using @code{\\override Staff.Beam #'collision-voice-only
+= ##t}
+
+"
+  doctitle = "Cross-staff chords - beaming problems workaround"
+} % begin verbatim
+
+\new PianoStaff <<
+  \new Staff = up
+    \relative c' {
+      <<
+        { r4
+          \override Stem #'cross-staff = ##t
+          \override Stem #'length = #19 % this is in half-spaces,
+              % so it makes stems 9.5 staffspaces long
+          \override Stem #'Y-offset = #-6 % stems are normally lengthened
+              % upwards, so here we must lower the stem by the amount
+              % equal to the lengthening - in this case (19 - 7) / 2
+              % (7 is default stem length)
+          e e e }
+        { s4
+          \change Staff = "bottom"
+          c, c c
+        }
+      >>
+    }
+  \new Staff = bottom
+    \relative c' {
+      \clef bass
+      \voiceOne
+      g8 a g a g a g a
+    }
+>>
index b89d3c912a26481b58087a4131a1d6fdb906764b..743262705f347e8ca6c7733fb78e7ae4894b95bf 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, keyboards"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index cfc58d26c4682fcfbaff6fea4314ea91997d1e0a..65694749fbe6deb71c5c74483833eb7d8884b102 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden tipografiar «custos» en diferentes estilos.
 
index bc7aaa41c7bf50a2ab9354b196fbc4e27f342caa..0107eb535257b30adcd072a56e44cccfa201b6ff 100644 (file)
@@ -4,12 +4,12 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones de acordes por medio de @code{'fret-diagram-details}.
index 8ab3f3ea73b7aeb5108a840e07005e0434d321e3..75bf60ece7c41dd343342fc0cf960377289af92e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones a través de @code{'fret-diagram-details}.  Para los
index 1843f271a5693d0c529764047da958f36718909e..e22b5d8d51dc07cd554ad9c79ae750520753cd85 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La dirección predeterminada de las plicas sobre la tercera línea
 del pentagrama está determinada por la propiedad
index 4729ea602d23ed9b9240c18a29b41246284dc4a3..7fe68eda8e42b5ae859a134299891317b54b3a34 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
index 1ec76ca66ff387e3403b10bd9b768d8fc2ddd0e7..8c8cc71438b036ca8f3073d0cf0687d8e215ffbe 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.46
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden añadir diagramas de posiciones predefinidas para
index e1ba733c2be1cf88b4e9afa385e58f4c372e7aae..78de4305ffdf926f7f4aa348ce0001fd080c968d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "midi"
index 80fcfdf84524682c033db94f4859a1bf97860cf6..61c64b447929c01229e0acc422f3f1ee0503f718 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si hay un solo pentagrama en un de los tipos de sistema
 @code{ChoirStaff} o @code{StaffGroup}, el comportamiento
index 9d3fe7d4e662a3d95f06eb81c7c30d7872297bf9..f3cae3839df8f6453a51cba6cb1dc0b870dc951f 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 He aquí una forma de imprimir un acorde en el que suena la misma nota
index bb7a22ac323ad46f4acfca64871971a16810b7cd..30fb087b23b2dbc912703540860e56beb8d03d4c 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Al trabajar con los callbacks de un grob, puede ser de mucha ayuda
index 578964aee9d1068b96e6a1bb769f14f955687239..24838b714289563d66f0505892dfd4579d8d52f5 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Alteraciones de estilo dodecafónico para todas las notas incluidas las naturales"
   texidoces = "
 En las obras de principios del s.XX, empezando por Schoenberg, Berg y
index a7b2d788f848e5a39423a42f4ef4aa01946ec71e..fc4b01f2fb06235fd771390122bd00b155d982e9 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Funciones postfijas para la creación de objetos de extensión de texto
index a9a0fed32f6b8ef10ee9ebb44c31859a5f2b42c8..b35749a052576bb8cc1da5a7260d0a5296486be5 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Los objetos de extensión \cresc, \dim y \decresc ahora se pueden
index 0a3dd64f3838008d06db38bdada75986c023eca6..bde46b8f212ca7ac33494e77aafb05c2f4c7d9ae 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 #(set-global-staff-size 15)
index 107637130cb51101efd3ac4c64c663dff6164da5..fe30d0419dbc4ad2e798988ea2b36c0ad2b0e0a4 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede insertar códico PostScript directamente dentro de un
 bloque @code{\\markup}.
index cc0d3781d54d812767bd86ca0ab10b7f0129d1da..06d81b57b18fd48b93f125fe319f590f9938ee67 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.52
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Del problema central de la notación, esto es, crear un determinado
 símbolo, se encargan los «plugins» o complementos añadidos.  Cada
index d22717be89aef77cdc10f1d0e702d96cf5616ec2..4306b711c167dcfa8ff2590ca4f424374f0c8ca7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Grabado manual de las ligaduras"
  texidoces = "
 Se pueden grabar a mano las ligaduras modificando la propiedad
index b355c6230eca0326681056e68013c500a3b9905c..29cd39df15087045aa9f64e3c3147d28a0e432d1 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times"
  texidoces = "
 La propiedad @code{tupletSpannerDuration} establece cuánto debe durar
index a57ef1d88aece356897140e01505b47c53c88de1..f9ed38c03da1736ca6aa97805443dc20563cf89f 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 #(set-global-staff-size 15)
index 3d277124bfd9f39bfa76d82a434dd18237fea762..ad838c220528e68ec8d02e9c790530e686f887bd 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de
index dd50f06339480b911031e2b80a74ba9daa52ef31..40d2973706d403baad3e64db43c3c569da7feae9 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 #(set-global-staff-size 15)
 \paper {
index bbdd13a198e3f3aa7608a15879cd4712c1f53503..e750a41a351692ad27c04cdaeea5803b716a73c9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "winds"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden conseguir símbolos especiales combinando glifos existentes,
 lo que es de utilidad para la notación de instrumentos de viento.
index 2b599d1d53b32b62bb7c59f700a929d30a5cb080..6717be0a263c56fd1d3bd0766c0015ed11aac820 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En este ejemplo se combinan las digitaciones de la mano izquierda,
 indicaciones del número de cuerda y digitaciones de la mano
index e150f869b72d47de241da7d52db4f74427469883..da6086473b71b8b59b03ed474a13b742250b191b 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 598240967071e4513c558b132bfa6fb6c0f69e14..d712a7c0918ae7b6cc2e70a8b2299f08d0b4d347 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Son posibles tanto los corchetes rectos sobre notas sueltas como
 extremos de barra sueltos en figuras unidas, con una combinación de
index 367afa4a3532c87ea49d69144aead65bf2f46e15..51dc9f03d23acf1728cfeea3fc621b696934cce0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
  doctitlees = "Forzar el desplazamiento horizontal de las notas"
 
index 97716761f6c135c01fb220ec5b9fea6214c09925..a4ce186cd9660a551a16023ec9eca2890ca0ce0d 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Si LilyPond no cree que haya sitio suficiente para un guión separador
index d89c25806903567d43352ed6fc535476911dfe6b..f2ab3d2dacd795b7de58f9604ca6c865defc833a 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Se pueden crear tablas alternativas de diagramas de posiciones.  Se
index 79041d476ba73cbe9513f7f8bb3dceb923cccb66..186483797e6b28a3148ed85080b3e30aba4e72a9 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 % INSPIRATIONAL HEADER FOR LILYPOND DOCUMENTATION fretted-strings %
 % Passage from Johann Kaspar Mertz "Opern Revue, Op. 8, no. 17"   %
 % on melodies from Bellini's "Norma"                              %
index 007f607b57dd410dc96c011c4653deab10b0ac75..32cf25a6d1d08bb4eb3a210c07b260eb99b9333f 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.49
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Armónicos sobre cuerdas pisadas (armónicos artificiales):
 "
@@ -46,13 +46,13 @@ pinchedHarmonics = {
 harmonics = {
   %artificial harmonics (AH)
   \textLengthOn
-  <\parenthesize b b''\harmonic>4_\markup{ \teeny "AH 16" }
-  <\parenthesize g g''\harmonic>4_\markup{ \teeny "AH 17" }
-  <\parenthesize d' d'''\harmonic>2_\markup{ \teeny "AH 19" }
+  <\parenthesize b b'\harmonic>4_\markup{ \teeny "AH 16" }
+  <\parenthesize g g'\harmonic>4_\markup{ \teeny "AH 17" }
+  <\parenthesize d' d''\harmonic>2_\markup{ \teeny "AH 19" }
   %pinched harmonics (PH)
   \pinchedHarmonics
   <a'\harmonic>2\startTextSpan
-  <g'\harmonic>4
+  <d''\harmonic>4
   <e'\harmonic>4\stopTextSpan
   %tapped harmonics (TH)
   <\parenthesize g\4 g'\harmonic>4_\markup{ \teeny "TH 17" }
@@ -73,8 +73,8 @@ frettedStrings = {
   \harmonicByFret #7 a4\5
   %tapped harmonics (TH)
   \harmonicByFret #5 d4\4
-  \harmonicByFret #5 d4\4
-  \harmonicByFret #4 g2\3
+  \harmonicByFret #7 d4\4
+  \harmonicByFret #5 g2\3
   %touch harmonics (TCH)
   a4 \harmonicByFret #9 g2.\3
 }
index e84d82e2ab1018dc53de39b7454953f94dc0634f..fd2f070adf6a81e114573345b6225ab1ac050eab 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código basado en Scheme genera
 24 notas aleatorias (o tantas como se necesiten), basándose en la
index 0079f05a6f9c19ef1b6bf6470472cbc835462bcf..55cb6d54a72315841853d3485e02518f56c0ef53 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%%%    Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 En muchos casos, las llaves que no están en la columna central se
index 2df1fb7d72cf96be9533b41fc5fdebfeec46330a..af86ed4f5fd8d70552908830aee836b3ba16ad28 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede cambiar el aspecto de las líneas de rejilla
 sobreescribiendo algunas de sus propiedades.
index 5d8ee869da62f2f47b18301e4c339aebf7566556..5448248f146738ca39448e40b549bc6f0286de37 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden trazar líneas verticales normales entre pentagramas para
 mostrar la relación entre notas; sin embargo, en caso de música
index 9e68a973e97c7d32c39d325dda05519af05c4252..8dc0ca9a360240f95195de4c5124f9ff48de0175 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los patrones de barrado se pueden alterar con la propiedad
 @code{beatGrouping}:
index 13833acc6b8c176c3bc1b1ef98c1163cd8318da0..a8946c23755c1ea30a9f1ba86ee44c93d5f07325 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
 
   texidoces = "
index fdfb94c632c4fa37894231aa555f02e58ad93a1d..e2a6ce9352d07173a19545b663b990e3ecceedf4 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, fretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para la música de guitarra, es posible mostrar los ritmos de rasgueo,
 además de las notas de la melodía, acordes y diagramas de posiciones.
index c528dac495906613c116dd74daf94a6c3c13c485..bd8fb5d90e076138ab4f8139f6fa87653ea324e2 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los reguladores pueden imprimirse en uno cualquiera de los estilos de
 @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag.
index a2c72964f1caa2dd870d442dffc7b99de3239bd1..782a5210b047ffabe2d32eec028b7898a68e990b 100644 (file)
@@ -4,10 +4,10 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Aquí se muestra la manera de ocultar las alteraciones de las notas
index 08e172ad5e5e0190a33d7fa8d4ae9e1035315acc..bbd0a9aa1825ef1c9d3a0e969a9f66c7fe002ee2 100644 (file)
@@ -4,12 +4,12 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los cambios de dinámica con estilo de texto (como cresc. y dim.)
 se imprimen con una línea intermitente que muestra su alcance.
index ab33d921631c1a88e9cf9486955c401a2044b6f1..378295056f2b05953c79a09a173653fd751464d5 100644 (file)
@@ -7,9 +7,21 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Il codice seguente presenta un modo di impostare un inno in cui ogni verso
+inizia e finisce con una misura parziale.  Mostra anche come aggiungere delle
+strofe come testo separato sotto la musica.
+
+"
+  doctitleit = "Modello per inno"
+
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
   Este fragmento de código muestra una forma de preparar un himno cuando
 cada línea comienza con un compás parcial.  También muestra cómo
index 47601163aa8e81735844d86579052349774cac6e..e78a5f3425498b5737e7f6c5dbf476c26a673a72 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los «incipit» se pueden escribir utilizando el grob del nombre del
 instruemento, pero manteniendo independientes las definiciones del
index b01edf6d0e3675a273e70191a33ea1165b6d89e0..5f0eee4487261773515a2e299142036564466e9b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Un corchete de arpegio puede indicar que se tienen que tocar con la
 misma mano notas que están en dos pentagramas distintos. Para hacerlo,
index bd17817b69095d92e597e4db0e18aa5722af98cc..5f458d2c63eb6c28cdf161973e0ec52780e7b440 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las marcas de cesura se pueden crear sobreescribiendo la propiedad
 @code{'text} del objeto @code{BreathingSign}.  También está disponible
index 26a29771e70991f12bba404a7779bc4d9801dcbe..187ae6a7ae7f4ce62cbdecba47cbf159c07593de 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 También se pueden imprimir símbolos de porcentaje sueltos.
 
index 0b718d4a7aa3201388ff030835362969d9b40cae..adfa2a46984195a740a6bf9e8135c14314f65aa6 100644 (file)
@@ -4,12 +4,25 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Ecco un modello piuttosto complesso, per un gruppo jazz. Si noti che tutti
+gli strumenti sono in @code{\\key c \\major}. Si tratta della tonalità
+reale; sarà trasposta automaticamente includendo la
+musica all'interno di una sezione @code{\\transpose}.
+
+"
+  doctitleit = "Modello per combo jazz"
+
   lsrtags = "keyboards, percussion, fretted-strings, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Ésta es una plantilla bastante avanzada, para un conjunto de
 jazz. Observe que la notación de todos los instrumentos está en
index 0239cd5580e975efa66f3049c4b90c7000c89b88..513edaa8e4df08e9e8b08239893ec88000abce46 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Cuando se produce un cambio de clave, el símbolo de clave se imprime a
 un tamaño menor que la clave inicial.  Esto se puede ajustar con
index bc0adef47982ea08479c6e062c73ed8612e9830c..2e5fde7ee39f47d0fc47911181dca62d84dad7b3 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 
index 0c440941d6ddd3251a4eaead79e7c114d16fea0f..b8eb5cf57464c8c5213925b64020d3f99134752a 100644 (file)
@@ -3,6 +3,7 @@ changing-the-text-for-sustain-markings.ly
 clusters.ly
 controlling-the-placement-of-chord-fingerings.ly
 creating-slurs-across-voices.ly
+cross-staff-chords---beaming-problems-workaround.ly
 cross-staff-tremolos.ly
 fine-tuning-pedal-brackets.ly
 indicating-cross-staff-chords-with-arpeggio-bracket.ly
index a5e86bb46927f04bfa541e6031f0b0b00e05104c..db67212b65ebc6b6a6901dad8e980cee56a04af1 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La tablatura se puede formatear utilizando letras en lugar de números.
 
index 8f416f65a7f48366781e568a71755a45ed809bf3..f0b86dd6ff8529f6785d68d9ea97b814958212f9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden aplicar puntas de flecha a los elementos de extensión de
 texto y de línea (como el Glissando).
index 5677f3262829fa347459b239bad8f038985ae5dd..bc2e4fb3a9b652191841a24a9f1d3e66438471be 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, vocal-music"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La alineación horizontal de la letra se puede ajustar sobreescribiendo
 la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
index e39a6587f3303513c0cc98c530aae7dbde1ea9ff..d27f8ee5d424a651ff4dd69a0f89af5657bc92d2 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.47
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
index fce9b972fe8c2fea4688f35fb57fbdcfb2077bf0..9b92424768178d7df3d64c1d1cded3a368364232 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El «Makam» es un tipo de melodía de Turquía que
 utiliza alteraciones microtonales de 1/9 de tono.  Consulte el
index 7cfbb7f57bc3ea5b084d97e222a03d81655f072a..102eab7cb8138bdfbda6f81f04b72f623af2ab21 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Las ligaduras de expresión se pueden construir con patrones de
index c7774c8a945260d600c3388f527a94ad6d753cdc..aa791227c8620fe4910d53071c320697ca005b66 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede engrosar una línea del pentagrama con fines pedagógicos
 (p.ej. la tercera línea o la de la clave de Sol).  Esto se puede
index 3aa2e05091124af0d8401fa4c2eeefa0784852a1..9981d3ab95f8fa36770c6a22dcc177521c99e8dc 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código proporciona una solución alternativa a la
 producción de contadores de compás utilizando repeticiones
index 56cd9d1562a4af0c53005ff2b68b8f08b35c3f18..8e9019ad52b8c9c0bb5927b480fc770dde696f91 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La disposición «mensurstriche» en que las líneas divisorias no
 están dibujadas sobre los pentagramas, sino entre ellos, se puede
index acc613d5f7168b9fdec2c30578e61a5b7be2fc48..90a0c6de8a5db498a9644ff2101d152464887b29 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Utilice un texto de marcado para sustituir el glifo de clave (TAB) con
 una fuente tipográfica moderna.
index 5122e3c49754a9be0886b238de69b2a74284a167..c7bffb1d2f56313d5b739cee2a4bbcab434d7197 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las abreviaturas se encuentran definidas dentro del archivo
 @file{ly/script-init.ly}, donde las variables @code{dashHat},
index 25b7e02792acab28ccdefcf0f84452cc280c76d3..b7cd9ca2c2d4533e4654508c4c7c509d621b11ca 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Cuando se puede una nota en la voz superior para evitar la colisión
 con una nota de otra voz, el comportamiento predeterminado es
index c71c5f08799994cdf679d21b0033edd68389e995..0e23b73d427cfff33007795bcf6fd0ed9d9c818b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede ajustar la posición vertical de una ligadura de
 expresión utilizando la propiedad @code{positions} del objeto
index 10544a63c87039db4967b60e72e902cbddcaa9b6..b76f2da0b64d6ccbf5368bd02b5bc6c1fab8ad00 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 texidoces = "
 Los elementos de marcado aplicados a un silencio multicompás se
 centran encima o debajo de éste.  Los elementos de marcado extensos
index 0ce234c63ab27e169ee0f2f6125bf09929b7f6d6..33190181106e79a2837f2bb28a0625d134a60a43 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede utilizar la propiedad
 @code{systemStartDelimiterHierarchy} para crear grupos de
index 4c42958a7b356583eaa6186e587b5caa25068cb3..ed942c9b31cf59147fc6b904205221db24c75ed3 100644 (file)
@@ -24,13 +24,13 @@ pinchedHarmonics = {
 harmonics = {
   %artificial harmonics (AH)
   \textLengthOn
-  <\parenthesize b b''\harmonic>4_\markup{ \teeny "AH 16" }
-  <\parenthesize g g''\harmonic>4_\markup{ \teeny "AH 17" }
-  <\parenthesize d' d'''\harmonic>2_\markup{ \teeny "AH 19" }
+  <\parenthesize b b'\harmonic>4_\markup{ \teeny "AH 16" }
+  <\parenthesize g g'\harmonic>4_\markup{ \teeny "AH 17" }
+  <\parenthesize d' d''\harmonic>2_\markup{ \teeny "AH 19" }
   %pinched harmonics (PH)
   \pinchedHarmonics
   <a'\harmonic>2\startTextSpan
-  <g'\harmonic>4
+  <d''\harmonic>4
   <e'\harmonic>4\stopTextSpan
   %tapped harmonics (TH)
   <\parenthesize g\4 g'\harmonic>4_\markup{ \teeny "TH 17" }
@@ -51,8 +51,8 @@ frettedStrings = {
   \harmonicByFret #7 a4\5
   %tapped harmonics (TH)
   \harmonicByFret #5 d4\4
-  \harmonicByFret #5 d4\4
-  \harmonicByFret #4 g2\3
+  \harmonicByFret #7 d4\4
+  \harmonicByFret #5 g2\3
   %touch harmonics (TCH)
   a4 \harmonicByFret #9 g2.\3
 }
index 2ee1ffc34893466e503277df727a9160fa186c4e..a838305c76fa4c5b85369f44a52a5dffbf54caa2 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 LilyPond también proporciona funciones de formato para imprimir
 números de grupo especial diferentes a la propia fracción, así
index 0eb665f10bc5157eabd841c2090b0d64a4b96615..e0268b2d6080993c08114c74956f73593c9c9d72 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Armaduras de tonalidad no tradicionales"
   texidoces = "
 
index e1f85f9f029e6b4dbe5ab797d4ed79a57f1bc2e8..da442fa1631b0c59209cb9d2a151909146dd8052 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Las cabezas de nota de notación fácil utilizan la propiedad
index b13cd1467053b2941cffaf44ebcea1c1ac3336f9..4469dbc2d8a4ce9422a7851db23db118d6fcbf4f 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.49
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Referencia para armónicos sobre cuerdas al aire (armónicos naturales):
 
index 0080414e1cd24a1baa268b3c080971327943ef89..e7c190465e603a8084ce2123804c2d1ed1214d07 100644 (file)
@@ -7,9 +7,22 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo modello mostra come usare i contesti annidati @code{StaffGroup} e
+@code{GrandStaff} per creare sottogruppi degli strumenti dello stesso
+tipo.  Mostra anche come usare @code{\\transpose} in modo che le variabili
+mantengano la musica per gli strumenti traspositori nell'intonazione reale.
+
+"
+  doctitleit = "Modello per orchestra coro e pianoforte"
+
   lsrtags = "pitches, staff-notation, vocal-music, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla muestra el uso de contextos @code{StaffGroup} y
 @code{GrandStaff} anidados para sub-agrupar instrumentos del mismo
index d58eab938e5abb692a7c1e38db97140232a8f64f..4ecd940c180a174984c191adefb7f4e8f2b423f8 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Internamente, @code{\\ottava} establece las propiedades
index bc5391ce50b277d4e3639c2c4126dc38368ebdf3..a892395e7a1b520c9fe0d6442d17232da7345128 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%%   Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%%   Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 1ebb04fdf1d190010f7ecf40aea11488f66a289e..dba0e30622e702445b327e55e313553ab36d5c5e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden mostrar los contadores de las repeticiones del tipo
 porcentaje a intervalos regulares mediante el establecimiento de
index eebe69a8a705dbde395172dd635a03d151232550..293e398834fa3c0e491936e4787f838fa5fd423b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las repeticiones de compases completos de más de dos repeticiones
 pueden llevar un contador si se activa la propiedad adecuada, como se
index 9c2563ef55b0c7dccef319b286b1ecdb503043bb..a6a95073ec13d7af1c7fea3640b75436a515a9eb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra"
  texidoces = "
 Este ejemplo artificial muestra cómo se pueden permitir tanto los
index dc20b62257ce9080724055d200850e3e1956eff7..8847cd074625769771cb925fe60a12e99135195f 100644 (file)
@@ -7,9 +7,19 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Ecco un comune doppio pentagramma per pianoforte con un po' di note.
+
+"
+  doctitleit = "Modello per pianoforte (semplice)"
+
   lsrtags = "keyboards, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Presentamos a continuación una plantilla de piano sencilla con algunas
 notas.
index 33563651f3995ac3198a4d7b6c598c3c86a59b11..f56fc58bcee24dd41a5ce3a420500e3b551dc64c 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Muchas partituras de piano tienen las indicaciones dinámicas centradas
 entre los dos pentagramas.  El contexto @code{Dynamics}, si se sitúa
@@ -26,6 +26,15 @@ automática.
 う必要はありません。
 "
 
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a428
+  texidocit = "
+Molti spartiti per pianoforte hanno le dinamiche poste al centro dei due righi.
+Il contesto @code{Dynamics}, se collocato tra i righi, posiziona automaticamente
+le dinamiche in modo corretto.
+
+"
+  doctitleit = "Modello per pianoforte con dinamiche al centro"
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In der meisten Klaviernotation werden die Dynamikzeichen zwischen
index ce22d60ff1301ca6ea2771db69098d0e2457553a..70601aac28a37e411f81d3256c5754ed65892295 100644 (file)
@@ -7,9 +7,20 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Invece di destinare un rigo a parte alla linea melodica e al suo testo, è
+possibile collocare il testo al centro di un doppio pentagramma per pianoforte.
+
+"
+  doctitleit = "Modello per pianoforte con testo al centro"
+
   lsrtags = "text, keyboards, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 En lugar de tener un pentagrama dedicado a la melodía y la letra, ésta
 se puede centrar entre los pentagramas de un sistema de piano.
index 6cb559494c4973a9bc0d06219ea09a7211d7a30b..44109dcf69ad45585f7814c57fb0998333e508b9 100644 (file)
@@ -4,12 +4,23 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Ecco un tipico formato per canzoni: un rigo con linea melodica e testo,
+e sotto l'accompagnamento per pianoforte.
+
+"
+  doctitleit = "Modello per pianoforte con melodia e testo"
+
   lsrtags = "vocal-music, keyboards, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 He aquí el típico formato dde una canción: un pentagrama con la
 melodía y la letra, y el acompañamiento de piano por debajo.
index 77be3b126b0e739d2108d897faf6d60d9da3148a..1bc6489db9634953e531dc7a5102e9b57d50f481 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 #(set-global-staff-size 15)
index 3387c858027e24d82a778407f6e85341387b0930..2e8a0a201037c479c21afdc91822cd9f88c22e21 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Es posible ejercer un mayor control sobre la colocación de las
 digitaciones de la mano derecha estableciendo el valor de una
index 0cbe14aeeaca085b9b279af0f120797e93e9bbde..aa1795f1ad683639270f5262bf6375cddab99924 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La polifonía se crea de la misma forma en un @code{TabStaff} que
 en una pauta normal.
index 55dd518485d93c519bc4621408530756d8d8fcee..e2ed8d2ddcbf298dc21d15000a589901c2657b35 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si necesitamos alargar o acortar un símbolo de arpegio, podemos
 modificar independientemente los extremos superior e inferior.
index 9f6a70ad85b1e1a40442caa09e4cf6de8bc5b96a..3f12902a1c633d6006b78c541731d018fa06be60 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Cuando se colocan figuras sobre líneas adicionales, sus barras se
index 5a5ab83ab685a4145ba396c41a905078b6f34736..11a71361aaa97aad174bcd5c163d79cbf9706114 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Al establecer la propiedad @code{'strict-grace-spacing} hacemos que
index e862981b70427811aff8db33144999add52afe58..d1c50b847e450b012c75358b621707f04519446f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Posicionar los silencios multicompás"
  texidoces = "
 A diferencia de los silencios normales, no existe una instrucción
index 7e7342ae4ca420bcb6317d12521324e032e63eba..1c3451f34497f8f9a128a7cb3ba5f95034f0b649 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los elementos de marcado de texto deben tener la propiedad
index 144d805adedf5b489ae399aeedb4529fc87b02f4..7d4fae9f67bcd0652deeb75f30b599a4b6511019 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 doctitlees = "Evitar que se añadan becuadros adicionales automáticamente"
 
 texidoces = "
index 7aaa42544f39a5e29f2dbd2fd89efafb4f20f0f3..eb7f37250141d1bf747f184b434987f13de5b977 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura"
 
 texidoces = "
index 7fb3db26c5674a60d92d611fae6340a52f0ac92e..7386aa8c6f041a251f46fc4a75c9743a0ae9063c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede imprimir una línea divisoria de la forma @code{|:} al
 principio de la pieza, sobreescribiendo la propiedad correspondiente:
index f1b5089f688d063214c35aba18e9aee5110959d6..e3beb190466ea895f91bb2814d587db591f18c19 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden imprimir los números de compás a intervalos regulares
index 7c63900a3a5bc033c9a7d3d1bdb4fc4435ac251b..e243bcf2c1e419ddbbc34368fc9d6f8fd0e6f79f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias.
index 114d06d86ca94908d7ca76f185ab868fb4571982..33278e8eadaf44c976109e7b4b79599cf5b62fe5 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden imprimir reguladores con un círculo en la punta (notación
 «al niente») estableciendo la propiedad @code{circled-tip} del objeto
index 366abe00abfb5e8c7d4f170166bd74ab56e5cdc8..e9e0c7ff93866c961758070c829c079fac71d1e6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 737d985eeca216902deeb0d225a6e9880bf7a8b9..31d7d84d52423ee2d6d2b56fa7a43c375440ea91 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aunque normalmente las marcas de texto sólo se imprimen sobre el
 pentagrama superior, también se pueden imprimir en otro pentagrama
index 8f961e594db87c758537a3af21f7a189356aef92..558160f4ea66ada222cb7662a0cd0975220399db 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada, las indicaciones metronómicas y las
 letras de ensayo se imprimen encima del pentagrama.  Para
index 84fa2c18b743b6b841c37ab4266ca11c27371199..673a31c3a8bd334c91498781e547f837fc4511a3 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar el contexto @code{NoteNames} para imprimir el valor
 textual de las notas.  La propiedad @code{printOctaveNames} activa o
index 5a3c671640555cac52726cffd4051f2e87ca3626..b4530884852244edbc82937be293d5f559ece3e5 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 De forma predeterminada se suprime el número del primer compás de una
index 23d82dbaa1ce9562f06031df8422dfa45c9df728..0ff2514c12a0dea187a113533d80315038d5e9c9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, staff-notation"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los pasajes citados tienen en cuenta la transposición de la fuente
 tanto como la del destino.  En este ejemplo, todos los
index ad47df7235976def8cd77165fdbef5d4f4efc564..3927fec3af00e5b17fb19c4eb8ab6199171af900 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 La propiedad @code{quotedEventTypes} determina los tipos de eventos
index a17b9c307a69fe42c2f11dc3a137b10fb6c0101b..714c52cd0598e2d433ffbfef1359179f780f9996 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "winds"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 El ejemplo siguiente muestra cómo se pueden realizar diagramas de
index 1749a1a78f095664e3766158136661b77e18f329..1cb4ceb3363b46ae4dfd182556167cbb13a6fff5 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los valores predeterminados para las notas de adorno están
index 4aeadca0209d4fed48fe4a78adbc0ab2d95936c8..74aa399711363734e7352d0c465cf63f06b3707e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden eliminar completamente los números de compás quitando el
index 7a396ccf1cc4764bfb7f35997377ef50f4a8fe04..cc4ff11d140ccfdb342209bad7b665e36680a857 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada, las líneas divisorias en los grupos
 StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas.
index ff44dedba4e04af408890c464f3cad1ae92152bc..3fd463cda091e2dda81a70ac2991daf612b27025 100644 (file)
@@ -4,12 +4,12 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.2"
 
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, breaks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El primer pentagrama vacío también se puede suprimir de la
 partitura estableciendo la propiedad @code{remove-first} de
index b4b4f3193401ea698f7991f3496af88a5dc39c15..7fe25c65c787f8a2c95d5df3ef2d3129aed4fa0f 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 #(set-global-staff-size 15)
index 47cbb64775b4f4ef22747ef0e17bfd5cb3698e9f..221b38f0c479a55a65836c8a408e6d0b9efea704 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Estilos de silencios"
   texidoces = "
 Los silencios se pueden imprimir en distintos estilos.
index f9f9b85b21d9a63ae267fa8e7451bac997e519c0..e3b3017657fca0f938f8f86e440a144a10cedbe9 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} sólo
 es necesario modificar la estructura de pulsos:
index f908c3d9f2ffc3b33e3c0183767c96ba629509e1..6a187f64b2f8ef2528e300f6e82cc14d4c371069 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 #(set-global-staff-size 15)
index f6ed87fbc17436a67a4c4d17a129190000dc80ad..63144f24f0105db5fe42332924653b308578544f 100644 (file)
@@ -7,8 +7,18 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Modello per coro SATB (quattro righi)
+
+"
+  doctitleit = "Modello per coro SATB - quattro righi"
+
   lsrtags = "vocal-music, template"
 
+
+
+
 %% Translation of GIT committish:  144cd434d02e6d90b2fb738eeee99119a7c5e1d2
 
   texidocde = "
index d70b036fd255af3ad5f6ac83e60f1d1683eebd35..4cf5f593450567599b72bd443ba7ff0b0feca0e8 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \header {
   lsrtags = "headwords"
index ce00dfc036b607c4dd18e5edce3ee341430811b8..8a617e59850b2a61f758a0c26f01e1e1c691292f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si la nota que da fin a un regulador cae sobre la primera parte de
 un compás, el regulador se detiene en la línea divisoria
index a28166d87de79ec3fce0d20bf26f841bf13883fe..3a2991487729060b47cecfdc16872f121ceeba63 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, paper-and-layout"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden insertar separadores sistema entre los sistemas de una
 página.  Se puede usar cualquier elemento de marcado, pero
index 798b88f402ced0f39168a5aac3355d8cdf473fe1..feba3e29c253a4603fe0766f7c84e1c0c1807824 100644 (file)
@@ -4,10 +4,10 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index 96c170c1e135ca47c59062bb08d3c6cc547490c5..eddfe22d0a4ff8efb5c1b477712072800cbb3075 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Si los reguladores son demasiado cortos, se pueden alargar
 modificando la propiedad @code{minimum-length} del objeto
index 433d062176ff8c6c38c2cebabac63de097189f3f..7491e9344c92d62dd3f1b62c88ee3baecf101cb6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 De forma predeterminada, los corchetes de primera y segunda vez se
 trazan encima de los finales alternativos completos, pero es posible
index e0a8e15ac8902a897eb311ba000694c0f00cfafd..80aa7049614451c8d468bad5830f27b53bded566 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se pueden imprimir los acordes exclusivamente al comienzo de las
 líneas y cuando cambia el acorde.
index 01666e13c335ec7aa4726ebe218dadb30e1abafb..f7c9a3e682441bbbb070b7aa317f8bf8375d24e7 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
index 0949905ae2f0aebc404e1afee4443162bb058905..7998275c2d4f0fda640fed70281d433194d6d1fa 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Al juntar nombres de acorde en cifrado americano, melodía y letra,
 obtenemos una hoja guía de acordes o «lead sheet»:
index 7d70454685442fe23a210df4c3621ffe34aa0cc0..1d4e31faa5ac0f3f34145f49854724e8a2da3b10 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 #(set-global-staff-size 15)
index 61b1d43629a57d3e77717c865b65ca601cf042b1..456f54c332098b1af219de1c973354f8ae9a9e39 100644 (file)
@@ -7,9 +7,21 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Ecco il modello di un comune spartito semplificato (lead sheet): include
+linea melodica, testo vocale, sigle degli accordi e relativi diagrammi
+per chitarra.
+
+"
+  doctitleit = "Modello di rigo singolo con note testo accordi e tasti"
+
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla facilita la preparación de una canción con melodía,
 letra y acordes.
index ae94a0554ba77da8f442c4c220ba062a3d1afa58..4dbc43e17d02273528421f9eda480cd23ddef7dd 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Presentamos a continuación un ejemplo de plantilla para una hoja
 guía de acordes con melodía, letra, acordes y diagramas de
index 1468c80332c681e378ba9bcee6b1e855dfb353f4..381b63de3edbbba01dcdf42fd7baa46aea511c28 100644 (file)
@@ -7,9 +7,20 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Vuoi preparare uno spartito semplificato (lead sheet) con melodia e
+accordi?  La tua ricerca è finita!
+
+"
+  doctitleit = "Modello di rigo singolo con note e accordi"
+
   lsrtags = "chords, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con
 melodía y acordes?  ¡No busque más!
index 6279807bd25fb597995092cae8f0dee41e3629f4..7181b8a0dd5071d3f5a88d00f69ecee9cadebbc0 100644 (file)
@@ -7,9 +7,23 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo piccolo modello presenta una semplice linea melodica con un testo. Copialo
+e incollalo, aggiungi le note e le parole. Questo esempio disabilita la
+disposizione automatica delle travature, come è consuetudine per le parti
+vocali. Per usare la disposizione automatica delle travature, cambia o
+commenta la relativa linea di codice.
+
+"
+  doctitleit = "Modello di rigo singolo con note e testo"
+
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta pequeña plantilla muestra una melodía sencilla con letra. Córtela
 y péguela, escriba las notas y luego la letra. Este ejemplo desactiva
index cf02492bb6a6198a0e9283c31cf30e2984e1d892..1427f451583921229e569668233307f21c8f3a8d 100644 (file)
@@ -7,9 +7,21 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo modello molto semplice mette a disposizione un rigo con delle note ed è
+quindi adatto per uno strumento non accompagnato o per un frammento 
+melodico. Copialo e incollalo in un file, aggiungi le note e hai finito!
+
+"
+  doctitleit = "Modello di rigo singolo con solo note"
+
   lsrtags = "template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla simple prepara un pentagrama con notas, adecuado para
 un instrumento solista o un fragmento melódico. Córtelo y péguelo en
index 36c33941336ca591ccf7424dd93db76b957a16fd..c85065de859e92dc0bdbd6852f91a220636822f5 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.49
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Los deslizamientos se pueden componer tipográficamente tanto en los
index 79a12344fa923146c2fd39d7edce7b9bed2212a1..f9d834c83c1fc7cfc6552794a56cc6ca241300aa 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Marca de pizzicato de chasquido (`pizzicato de Bartók')"
   texidoces = "
 El pizzicato de chasquido (también llamado @q{Pizzicato de Bartók}) es un
index 81c0a828369c4eba16fdbe3d171c7ad934429147..a1b083aeae0f3e9f92211b5058d88414736e4448 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "catalan.ly"
 #(set-global-staff-size 15)
index f0d53f507f0dbf30329a92bcf147e06bf9b3ab50..be3f37c94ad724aeec88d474fa68ce0120d1f566 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Los textos independientes se pueden disponer en varias columnas
 utilizando instrucciones @code{\\markup}:
index 97294f3cc2868b1f854fcba0135f9e7854f2f83d..a68335f95ec13ed8e59409cca70cae58b8b2f80d 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 La dirección de las plicas se contola de la misma forma en la
 tablatura que en la notación tradicional. Las barras se pueden
index 38a3f1a141236d099615d786812b6c25267c62a7..fb0ffe98a99404384a4ff62b677e23276047ca4a 100644 (file)
@@ -7,9 +7,20 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo modello presenta un semplice quartetto d'archi. Impiega anche una
+sezione @code{\\global} per definire il tempo e l'armatura di chiave.
+
+"
+  doctitleit = "Modello per quartetto d'archi (semplice)"
+
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla muestra un cuarteto de cuerda normal. También utiliza
 una sección @code{\\global} para el compás y la armadura
index 8bdad9a45c4440de3d626469b41c8baa48f2e104..786c53729cf95fcaf12576de06f5de5b3a55caeb 100644 (file)
@@ -7,9 +7,30 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 514674cb00c18629242dfcde0c1a4976758adc56
+  texidocit = "
+Il frammento di codice del @qq{Modello per quartetto d'archi} crea un bel
+quartetto, ma cosa fare se si ha bisogno di creare le singole parti? Questo
+nuovo modello mostra come usare la funzionalità @code{\\tag} per dividere
+facilmente un pezzo in parti staccate.
+
+Occorre dividere questo modello in file separati; i nomi dei file sono
+indicati nei commenti all'inizio di ogni file. @code{piece.ly}
+contiene tutte le definizioni musicali. Gli altri file – @code{score.ly},
+@code{vn1.ly}, @code{vn2.ly}, @code{vla.ly} e @code{vlc.ly} –
+creano ciascuna parte.
+
+
+Non dimenticare di togliere i commenti quando usi i file separati!
+
+"
+  doctitleit = "Modello per quartetto d'archi con parti separate"
+
+
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un
 resultado satisfactorio para el cuarteto, pero ¿y si tenemos que
index 0ec95bd781b527f7b4252939c5d5ef74f7efd7da..bba85fb6bb14bb0cda1ab4841a2854d5eac744e5 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index e17ed8b27c7f830485a2af9f704fb8cfe8e3feeb..34aaf30d2be17ddb83ebc29db54e571a999367d2 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 \include "english.ly"
 #(set-global-staff-size 15)
index 28f7d0ead0907b131fca29612e4c321cea9fd966..46a4ae024bd761d5cbe599f45f34108fd56562c7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 A veces, la indicación de compás no debe imprimir la fracción completa
index 9cf67512cd0bd37ca0a9b32d6e213c3e5a0880dd..2fe993cb8d796aef92f82fe1eef32f483de1995c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 A modo de alternativa para obtener auténticos «incipit»
 independientes de la partitura principal, se incluyen como
index fef0aa29e94b828dba69c94b45295d0c5ce83795..88ccaff75e8a54b01fd259719df8866e386923b7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 doctitlees = "Transportar música con el menor número de alteraciones"
 texidoces = "
 Este ejemplo utiliza código de Scheme para forzar las
index ae53023277d2761a3c728c7462457533cad6de4b..5a7c2a9de2dc3bb5ceb632efd3abf06682aeb948 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   doctitlees = "Trucaje de las propiedades de clave"
   texidoces = "
 La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de
index 81d3d5c3673f543af8f840c9ed795cbcc3fa5a24..5e38f9da8d9f5a4873c09ae185e93465ead33e02 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 La disposición de las expresiones de adorno se puede cambiar a lo
index 207649664b80a158a0e2f6dd0e85456278e9bc03..f6ecc202347d8ebe4c697af19ebf5e6bbbf39d31 100644 (file)
@@ -20,6 +20,7 @@ creating-a-delayed-turn.ly
 creating-double-digit-fingerings.ly
 creating-simultaneous-rehearsal-marks.ly
 creating-text-spanners.ly
+cross-staff-chords---beaming-problems-workaround.ly
 custodes.ly
 customizing-fretboard-fret-diagrams.ly
 customizing-markup-fret-diagrams.ly
index 0b0480bb8d0d254cbb29b59c79151c936a445b3c..025767c8b0622adef9a6dccaad599487b8c1e1e5 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 % #!lilypond lcp-extract.ly -*- coding: utf-8; -*-
 
 %%%
index f95bb3812aae48efc0fd607a10db230c1e26a739..16d9a53506b8c1cb89d2af738ce1d3de749410a0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Se puede usar el delimitador de comienzo de un sistema
 @code{SystemStartSquare} estableciéndolo explícitamente dentro de
@@ -41,7 +41,7 @@ mentionnerez explicitement au sein d'un contexte @code{StaffGroup} ou
 
   texidoc = "
 The system start delimiter @code{SystemStartSquare} can be used by
-setting it explicitly in a @code{StaffGroup} or @code{ChoirStaffGroup}
+setting it explicitly in a @code{StaffGroup} or @code{ChoirStaff}
 context.
 
 "
index 19ebf614450ca224c4aa162bbddcf0c94450dc28..c975e50ac42b18366a31e0ce6d14aa8aa2c822fe 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Se pueden imprimir estilos alternativos del corchete o gancho de las
index 83aaf8aa2821695605d4bfb48474333a8294c450..b521d6b6d920c496da5bd8f98b5eb3b489bcdf4c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, vocal-music"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El corchete de arpegios @code{arpeggioBracket} se puede usar para
 indicar la división de voces cuando no hay plicas que puedan ofrecer
index 6aba4ede14eae8f9ae68dfe379eacba206417a03..7fe8032374584a79dbff22ec8a1f5f94cc06da29 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Algunos compositores escriben dos ligaduras cuando quieren acordes
 legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
index 27ad719b2cd34bd76a3188720b7d55043bddf404..b3c8d605a6f09d51f2055acf3def096b30fcbc3d 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Es posible aplicar la barrita que cruza la barra de las
index 61f66c33464ee1338bcfb60d1ad13ac7a1637e89..912e36704448c21d6d99f74982e38648713bebd5 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index a16dcd6d79b4151155002c837c16629cc7d45855..ff14f5a769473e26dada717866edcad6a6c78e2b 100644 (file)
@@ -41,7 +41,7 @@ parallelogram =
       fill
       grestore" )
     (cons 0 1.3125)
-    (cons 0 0))
+    (cons -.75 .75))
 
 myNoteHeads = \override NoteHead #'stencil = \parallelogram
 normalNoteHeads = \revert NoteHead #'stencil
@@ -52,5 +52,3 @@ normalNoteHeads = \revert NoteHead #'stencil
   \normalNoteHeads
   <f, \tweak #'stencil \parallelogram b e>4 d
 }
-
-
index b511d834abaee5ed3a32693237759979beddc6db..fd76cb9390e1f99e90126d6c8a934cdd1902a1e1 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index b38be99a1f79a5fa85f2a11e847b7c775ea6183a..00781b41749f0cbad2fedaf84af66c698d484097 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
  doctitlees = "Uso de ligaduras en los arpegios"
  texidoces = "
 En ocasiones se usan ligaduras de unión para escribir los arpegios.
index de55d0863e57f4874970ae9c837a9c734a9b4500..181244b37eb5f129ada2245b97e521259657d728 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor
 adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e
index 3736700c3edf1f5d60ba48f92e631202c6d007b4..9f1d5eca2517c791062723c6417b1807115495e2 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Las expresiones dinámicas que se comienzan, terminan o se producen
 en la misma nota se alinean verticalmente.  Para asegurar que las
index 1ff02ca91739cd9ebf8127098596602f1669f77f..4e2b678b604e41b83c411a1736727a4022dc1489 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Este fragmento de código muestra el uso de las propiedades de
 contexto @code{alignBelowContext} y @code{alignAboveContext} para
index d463c3a3e446e546574da802f8411af6181bed5d..5b0b75e958ee0b4e88b37d03704fb8179de007e6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords, tweaks-and-overrides"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Allí donde se utilicen líneas extensoras para el bajo cifrado mediante
 el establecimiento de @code{useBassFigureExtenders} al valor
index f2e5ac4d3419353cfc42a60204559dd040c6e343..dbaee280a53cd259c8c9cace2d62aa7fed9d2a61 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.47
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 
 Esta plantilla añade una reducción de piano automática a la partitura
@@ -30,6 +30,17 @@ entonces los cambios se aplicarán también a la reducción de piano.
 の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
 "
 
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo modello aggiunge una riduzione automatica per pianoforte alla tipica
+partitura vocale SATB illustrata in @qq{Modello per complesso vocale}. Si
+dimostra così uno dei punti di forza di LilyPond – è possibile usare una
+definizione musicale più di una volta. Qualsiasi modifica venga fatta alle note
+delle voci (ad esempio, @code{tenorMusic}) verrà applicata anche alla riduzione
+per pianoforte.
+"
+  doctitleit = "Modello per gruppo vocale con automatica riduzione per pianoforte"
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In diesem Beispiel wird ein automatischer Klavierauszug zu der
index 4af03f43d702bec479a14555df7ef0ec23fd7cf3..2aa33091223c71b852925a2ae3b5a6a2c6db99da 100644 (file)
@@ -7,9 +7,21 @@
 \version "2.14.0"
 
 \header {
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo modello è fondamentalmente analogo al semplice modello @qq{Complesso vocale},
+con l'unica differenza che qui tutti i versi del testo sono posizionati
+usando @code{alignAboveContext} e @code{alignBelowContext}.
+
+"
+  doctitleit = "Modello per gruppo vocale con testo allineato sotto e sopra i righi"
+
   lsrtags = "text, vocal-music, contexts-and-engravers, template"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+
+
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Esta plantilla es, básicamente, la misma que la sencilla plantilla
 @qq{Conjunto vocal}, excepto que aquí todas las líneas de letra se
index 387b3a546ed3f2689075f0f075020ae28caf8413..459e985c59b19bb8de18dd8e7c81aa4259ff722e 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 Esta plantilla crea una partitura que comienza con una estrofa para
@@ -21,6 +21,16 @@ todas las partes) a lo largo de toda la partitura.
 
   doctitlees = "Estrofa para solista y estribillo a dos voces"
 
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Questo modello crea una partitura che inizia con una sezione solistica e
+prosegue in un ritornello a due voci.  Illustra anche l'uso delle
+pause spaziatrici all'interno della variabile @code{\\global} per definire
+i cambi di tempo (e altri elementi comuni a tutte le parti) nel corso di
+tutta la partitura.
+"
+  doctitleit = "Modello per gruppo vocale con strofa e ritornello"
+
 %% Translation of GIT committish: 64feeff58e5ce3397de87188a08ac99f7ef8e37b
 
   texidocde = "
index e5e3637ebf9ecd9e64b17fbc2a4e1ed3c25fb4bd..be94bf1975ceafbf9a64288742ce14cd8b190dce 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.47
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 He aquí una partitura vocal estándar para cuatro voces SATB. Con
 grupos mayores, suele ser útil incluir una sección que aparezca en
@@ -27,6 +27,16 @@ voces se reagrupan en sólo dos pentagramas.
 便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@c
 歌\" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。"
 
+%% Translation of GIT committish: 4077120c18ac1dc490501b3d7d5886bc93e61a42
+  texidocit = "
+Ecco una tipica partitura corale a quattro parti, SATB. Se il complesso è più
+ampio, è spesso comodo scrivere gli elementi comuni in un'unica sezione, che
+verrà poi inclusa in tutte le parti. Ad esempio, l'indicazione di tempo e
+l'armatura di chiave sono quasi sempre le stesse per tutte le parti. Come nel
+modello dell'@qq{Inno}, le quattro voci sono ripartite in due soli righi.
+"
+  doctitleit = "Modello per complesso vocale"
+
 %% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidocde = "
 Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
index 924fad3288fac3a3ee4e0a728d7664f5b6fe5185..6991676199f8e8cb268e75890f2f4a8bb9bc7552 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.47
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 #(set-global-staff-size 15)
index 09215dc036025bb0a1fdd71a75e01d6a4a05695b..8610bd2b06ca794b652d3a74ea887990f835381a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, staff-notation, chords"
 
-%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Mediante la adición del grabador @code{Volta_engraver} al
 pentagrama pertinente, se pueden poner los corchetes de primera y
index 21d57d213aa4c278ce39956c01b3522348145a88..7e52280c0f9199e7a767bfc7df9fa54bf3cf4925 100644 (file)
@@ -4,7 +4,7 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 #(set-global-staff-size 15)
 \paper {
index 923214cc127b37af0758924a5cf760e7d87c9875..331a47493f78f7c168373dd803ce848c8ca0d880 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.36
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%%%    Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
 
   texidoces = "
 
index b163a2815314128aae17020cbf1c61613e11c658..b94ca3032dc5ea32b246f089c4b9f9d9a31e270b 100644 (file)
@@ -4,11 +4,11 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.13.51
+%% Note: this file works from version 2.14.0
 \version "2.14.0"
 
 \header {
-%%%    Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+%%%    Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 El fragmento de música que aparece a continuación presenta todos los
 diagramas de viento madera que se encuentran definidos en LilyPond por
index 7d19c62d60e6cbbf83dd34835addfbfcada0735f..c75c55580e861e9931b41a94f33b1db525f927c7 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Last updated Thu Mar 24 14:52:33 UTC 2011
+@emph{Last updated Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.5 0.5
 
@@ -26,7 +26,7 @@ LilyPond Changes
 @item
 Section titles
 @*
-(1464)
+(1779)
 @tab Francisco Vila
 @*
 
@@ -276,7 +276,7 @@ up to date
 @item
 1 Music engraving
 @*
-(5297)
+(5296)
 @tab  Till Paala
 @*
 
@@ -979,22 +979,22 @@ Luca Rossetto Casel
 @ifhtml
 
 @html
-<span style="background-color: #dfef77">partially translated (93 %)</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially translated (93 %)
+translated
 @end ifnothtml
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #2cff20">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -1220,11 +1220,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -1286,11 +1286,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @item
 1 Tutorial
@@ -1582,11 +1582,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @item
 2 Common notation
@@ -1856,11 +1856,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @item
 3 Fundamental concepts
@@ -2042,11 +2042,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -2117,7 +2117,7 @@ partially up to date
 @item
 4 Tweaking output
 @*
-(15408)
+(15393)
 @tab Pavel Fric
 @*
 
@@ -2522,11 +2522,11 @@ Luca Rossetto Casel
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
 @end ifnothtml
 @*
 
@@ -3063,11 +3063,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -3134,16 +3134,16 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 1.1 Pitches
 @*
-(4479)
+(4502)
 @tab Till Paala
 @*
 
@@ -3161,11 +3161,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #40fe23">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -3238,7 +3238,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #40fe23">partially up to date</span>
+<span style="background-color: #47ff24">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3261,7 +3261,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #2cff20">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3288,11 +3288,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #33ff21">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -3311,11 +3311,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Frédéric Chiasson
 @*
@@ -3539,7 +3539,7 @@ up to date
 @item
 1.4 Repeats
 @*
-(930)
+(945)
 @tab Till Paala
 @*
 
@@ -3636,11 +3636,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #39ff22">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -3659,16 +3659,16 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #39ff22">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 1.5 Simultaneous notes
 @*
-(2163)
+(2216)
 @tab Till Paala
 @*
 
@@ -3686,7 +3686,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #33ff21">partially up to date</span>
+<span style="background-color: #83fe2c">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3767,7 +3767,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #33ff21">partially up to date</span>
+<span style="background-color: #7dff2b">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3779,27 +3779,27 @@ partially up to date
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
 @end ifnothtml
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #83fe2c">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 1.6 Staff notation
 @*
-(2056)
+(2345)
 @tab Till Paala
 @*
 
@@ -3817,11 +3817,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #9eff30">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -3885,11 +3885,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #9eff30">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -3897,22 +3897,22 @@ up to date
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
 @end ifnothtml
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #9eff30">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 1.7 Editorial annotations
@@ -3935,11 +3935,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -3993,11 +3993,11 @@ partially up to date
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
 @end ifnothtml
 @*
 
@@ -4120,11 +4120,11 @@ up to date
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
 @end ifnothtml
 @*
 
@@ -4158,11 +4158,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -4206,11 +4206,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -4367,7 +4367,7 @@ up to date
 @item
 2.2 Keyboard and other multi-staff instruments
 @*
-(838)
+(864)
 @tab  Till Paala
 @*
 
@@ -4625,7 +4625,7 @@ up to date
 @item
 2.4 Fretted string instruments
 @*
-(2640)
+(2649)
 @tab Till Paala
 @*
 
@@ -5436,29 +5436,29 @@ up to date
 @item
 3 General input and output
 @*
-(7069)
+(7671)
 @tab Till Paala
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">translated</span>
+<span style="background-color: #dfef77">partially translated (90 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-translated
+partially translated (90 %)
 @end ifnothtml
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #83fe2c">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -5491,22 +5491,22 @@ Valentin Villenave
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">translated</span>
+<span style="background-color: #dfef77">partially translated (83 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-translated
+partially translated (83 %)
 @end ifnothtml
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #91ff2e">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -5534,7 +5534,7 @@ up to date
 @item
 4 Spacing issues
 @*
-(11017)
+(11087)
 @tab Till Paala
 @*
 
@@ -6062,7 +6062,7 @@ up to date
 @end multitable
 
 
-@multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
+@multitable @columnfractions  0.142857142857 0.142857142857 0.142857142857 0.142857142857 0.142857142857 0.142857142857 0.142857142857
 
 @headitem
 LilyPond Application Usage
@@ -6070,6 +6070,7 @@ LilyPond Application Usage
 @tab es
 @tab fr
 @tab hu
+@tab it
 @tab ja
 @item
 Section titles
@@ -6169,6 +6170,49 @@ translated
 @ifnothtml
 partially up to date
 @end ifnothtml
+@tab Federico Bruni
+@*
+
+@ifhtml
+
+@html
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+translated
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
 @tab Yoshiki Sawada
 @*
 
@@ -6290,6 +6334,49 @@ translated
 @ifnothtml
 partially up to date
 @end ifnothtml
+@tab Federico Bruni
+@*
+
+@ifhtml
+
+@html
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+translated
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
 @tab Yoshiki Sawada
 @*
 
@@ -6451,6 +6538,49 @@ partially translated (96 %)
 @ifnothtml
 partially up to date
 @end ifnothtml
+@tab Federico Bruni
+@*
+
+@ifhtml
+
+@html
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+translated
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
 @tab Yoshiki Sawada
 @*
 
@@ -6590,13 +6720,56 @@ translated
 @ifnothtml
 partially up to date
 @end ifnothtml
-@tab Yoshiki Sawada
+@tab Federico Bruni
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">translated</span>
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+translated
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
+@tab Yoshiki Sawada
+@*
+
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -6616,7 +6789,7 @@ up to date
 @item
 3 Running @command{lilypond-book}
 @*
-(3764)
+(3952)
 @tab Reinhold Kainhofer
 @*
 
@@ -6732,11 +6905,54 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
+@tab Federico Bruni
+@*
+
+@ifhtml
+
+@html
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+translated
 @end ifnothtml
 @*
 
@@ -6766,7 +6982,7 @@ not translated
 @ifhtml
 
 @html
-<span style="background-color: #91ff2e">partially up to date</span>
+<span style="background-color: #97ff2f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -6863,6 +7079,49 @@ not translated
 
 @ifhtml
 
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
+@tab Federico Bruni
+@*
+
+@ifhtml
+
+@html
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+translated
+@end ifnothtml
+@*
+
+@ifhtml
+
 @html
 <span style="background-color: #1fff1f">up to date</span>
 @end html
@@ -7037,6 +7296,49 @@ not translated
 
 @ifhtml
 
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
+@tab Federico Bruni
+@*
+
+@ifhtml
+
+@html
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+translated
+@end ifnothtml
+@*
+
+@ifhtml
+
 @html
 <span style="background-color: #1fff1f">up to date</span>
 @end html
@@ -7158,6 +7460,49 @@ not translated
 
 @ifhtml
 
+@html
+<span style="background-color: #1fff1f">up to date</span>
+@end html
+@end ifhtml
+@ifnothtml
+up to date
+@end ifnothtml
+@tab Federico Bruni
+@*
+
+@ifhtml
+
+@html
+<small>Luca Rossetto Casel</small>
+@end html
+@end ifhtml
+@ifnothtml
+Luca Rossetto Casel
+@end ifnothtml
+@*
+
+@ifhtml
+
+@html
+<small></small>
+@end html
+@end ifhtml
+@ifnothtml
+
+@end ifnothtml
+@ifhtml
+
+@html
+<span style="background-color: #d0f0f8">not translated</span>
+@end html
+@end ifhtml
+@ifnothtml
+not translated
+@end ifnothtml
+@*
+
+@ifhtml
+
 @html
 <span style="background-color: #1fff1f">up to date</span>
 @end html
@@ -7428,11 +7773,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #c0ff34">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Ben Luo
 @*
@@ -7613,11 +7958,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -7681,11 +8026,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Ben Luo
 @*
@@ -7713,7 +8058,7 @@ up to date
 @item
 Introduction
 @*
-(4506)
+(4564)
 @tab Pavel Fric
 @*
 
@@ -7731,7 +8076,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #47ff24">partially up to date</span>
+<span style="background-color: #4efe25">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -7890,11 +8235,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -7958,11 +8303,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #54ff26">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab 
 @ifhtml
@@ -7979,7 +8324,7 @@ translated
 @item
 Download
 @*
-(1183)
+(1195)
 @tab Pavel Fric
 @*
 
@@ -7997,7 +8342,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #40fe23">partially up to date</span>
+<span style="background-color: #4efe25">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -8020,11 +8365,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -8088,11 +8433,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Harmath Dénes
 @*
@@ -8111,11 +8456,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Federico Bruni
 @*
@@ -8154,11 +8499,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -8177,11 +8522,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Jan Nieuwenhuizen
 @*
@@ -8220,11 +8565,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #54ff26">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Ben Luo
 @*
@@ -8243,16 +8588,16 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 Manuals
 @*
-(1200)
+(1203)
 @tab Pavel Fric
 @*
 
@@ -8270,11 +8615,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Till Paala
 @*
@@ -8359,11 +8704,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Harmath Dénes
 @*
@@ -8382,11 +8727,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Federico Bruni
 @*
@@ -8425,11 +8770,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -8448,11 +8793,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Jan Nieuwenhuizen
 @*
@@ -8491,11 +8836,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #5bff27">partially up to date</span>
+<span style="background-color: #1fff1f">up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially up to date
+up to date
 @end ifnothtml
 @tab Ben Luo
 @*
@@ -8514,11 +8859,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 A GNU Free Documentation License
index 01e637bdc9726ccdc5fbe64caf6191a5b4060aeb..375031c98f18cca75ef08a27d85eb7a00fb4b990 100644 (file)
@@ -546,13 +546,21 @@ the following options
 @{ c1 @}
 @end example
 
-To produce a useful @file{EPS} file, use
+To produce useful image files:
 
 @example
-lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts   myfile.ly
+EPS
+
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts myfile.ly
+
+PNG
 
-@file{PNG}:
 lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png myfile.ly
+
+A transparent PNG
+
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \
+  -dpixmap-format=pngalpha --png myfile.ly
 @end example
 
 
index 085d45580397cc4f647a915a1bad7f0f40742a76..8b3314257a5997e1a5c8c3ad59fd01936c8c96be 100644 (file)
@@ -326,7 +326,7 @@ files in the @file{Notes} directory:
 
 @example
 %%% top of file "symphony-cello.ly"
-\include ../definitions.ily
+\include ../symphonyDefs.ily
 \include ../Notes/cello.ily
 @end example
 
index d6918d1fbc0504526444c58c5edac755016938ac..a5d4784df23f639b317456e0d589ee0d0b7a1f5d 100644 (file)
@@ -270,7 +270,7 @@ guidelines for @ref{Bug reports}.}
 @divClass{column-center-top}
 @subheading What are @qq{Tiny examples}?
 
-A tiny example is an example from which nothing can be removed.
+A tiny example is an example from which @strong{nothing} can be removed.
 @divEnd
 
 @divClass{column-left-bottom}
@@ -284,12 +284,12 @@ The simpler the example is, the quicker potential helpers can
 understand it and help you.
 
 @item
-A simple example demonstrates that you have put effort towards
+A tiny example demonstrates that you have put effort towards
 solving the problem yourself.  When people send huge portions of
-input, it looks like they don't care how if we help them or not.
+input, it looks like they don't care if we help them or not.
 
 @item
-Creating a tiny example forces you to understand what is
+Creating a tiny example helps you to understand what is
 happening.  Many false problem reports can be avoided by
 attempting to create a tiny example; if you cannot replicate a
 @qq{bug} in a tiny example, then the problem was probably an
@@ -302,39 +302,78 @@ insufficient understanding of LilyPond, not an actual bug!
 
 
 @divClass{column-right-bottom}
-@subheading How do I create them?
+@subheading How to create them?
 
 @divClass{keep-bullets}
 @itemize
 
 @item
-Include the \version number.
+Include the @code{\version} number.
 
 @item
 Make it small!  Examples about spacing or page layout might
 require many bars of music, but most issues can be reproduced
-using only a single measure.
+using less than a single measure.
 
 @item
 When trying to create an example, try commenting out @w{(@code{%}
-or @code{%@{ @dots{} %@}})} sections of your file.  If you can
-comment something while still demonstrating the main idea, then
-remove the commented-material!
+or @code{%@{ @dots{} %@}})} sections of your file.  If you
+can comment something while still demonstrating the main idea,
+then remove the commented-material.
 
 @item
-Avoid using complicated notes, keys, or time signatures, unless
+Avoid using complicated notes, keys or time signatures, unless
 the bug is about the behavior of those items.
 
 @item
 Do not use @code{\override} or @code{\set} commands unless the bug
-is about those particular commands.
+is about those specific commands.
+
+@item
+Optionally, attach an image showing the desired graphical output.
 
 @end itemize
 @divEnd
 
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading How tiny should they be?
+
+Is the code below a minimal example?
+
+@example
+\version "2.14.1"
+\include "english.ly"
+
+\score @{
+  \new Staff @{
+    \key d \major
+    \numericTimeSignature
+    \time 2/4
+    <cs' d'' b''>16 <cs' d'' b''>8.
+    %% Here: the tie on the D's looks funny
+    %% Too tall? Left-hand endpoint is not aligned with the B tie?
+    ~
+    <cs' d'' b''>8 [ <b d'' a''> ]
+  @}
+@}
+@end example
 
+Well, it is not very big, but a truly minimal example is here:
+
+@example
+\version "2.14.1"
+@{
+  % middle tie looks funny here:
+  <c' d'' b''>8. ~ <c' d'' b''>8
+@}
+@end example
+
+Very few tiny examples exceed 10 lines of code -
+quite often 4 lines are enough to demonstrate the problem!
+
+@divEnd
 
 
 @node Bug reports
index 40a2fe86f4e16ffa5cb2dbfb651dde6e1f3978ca..79f1b4bb80ac78975d0c62c764f40bbcd4c85ad4 100644 (file)
@@ -207,6 +207,14 @@ In the shell, type:
 uninstall-lilypond
 @end example
 
+@subsubheading Help
+
+In the shell, type:
+
+@example
+sh lilypond-@versionStable{}-OS-TYPE.sh --help
+@end example
+
 @divEnd
 
 
@@ -230,22 +238,22 @@ upgrade to these versions.
 @item
 @sourceimage{logo-fedora,,,}
 @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.12.3}
+Fedora: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-ubuntu,,,}
 @uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.12.2}
+Ubuntu: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.12.3}
+Slackware: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.2}
+Debian: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-suse,,,}
@@ -514,7 +522,7 @@ which contains LilyPond executable files like this:
 [@var{pre-set paths}];@var{DIR}\LilyPond\usr\bin
 @end example
 
-@warning{@var{DIR} will generally be @code{C:\Program Files}.}
+@warning{@var{DIR} will generally be @code{C:@bs{}Program Files}.}
 
 @noindent
 and click @qq{OK} button to close the window.
index 661421b29b4acd3764ab9ea853556682a3712960..a46ab720da6d11303708974ac47b2d4a3808a775 100644 (file)
@@ -120,13 +120,17 @@ tweaks reference.
 
 @itemize
 
+@item
+@ref{All}:
+previous stable versions and current as a compressed archive.
+
 @item
 @ref{Translated}:
 translation status for non-English readers.
 
 @item
-@ref{All}:
-downloadable and old manuals.
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}:
+user-created examples, hints and tips.
 
 @item
 @ref{Development}:
index ce18e8dc02c81274f5b465e50196e6bc862dd40b..4464586067f990ea2f3064ac466eda1c384fe132 100644 (file)
@@ -8,13 +8,11 @@
 
 @c used for news about the upcoming release; see CG 10.2
 
-
 @newsItem
-@subsubheading LilyPond 2.15.0 released!  @emph{June 7, 2011}
+@subsubheading LilyPond 2.15.7 released!  @emph{July 29, 2011}
 
-We are happy to announce the release of LilyPond 2.15.0.  This is
-the beginning of a new unstable development effort, and adds the
-usual number of bugs.
+We are happy to announce the release of LilyPond 2.15.7.  This
+release contains the usual number of bugfixes.
 
 It is strongly recommended that normal users do @strong{not} use
 this release, and instead use the stable 2.14 version.
@@ -23,78 +21,23 @@ this release, and instead use the stable 2.14 version.
 
 
 @newsItem
-@subsubheading LilyPond 2.14.0 released! @emph{June 6, 2011}
-
-We are proud to announce the release of GNU LilyPond 2.14.
-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.
-
-Many improvements have been made in the past two and a half years
-since the previous main stable version.  A few major improvements
-are:
-
-@itemize
-@item
-LilyPond is now licensed under the GNU GPL v3 or higher.
-
-@item
-The vertical spacing engine has been drastically changed, making
-it much more flexible and easier to control.
-
-@item
-Automatic beaming is now more flexible, and beam collisions are
-avoided.
-
-@end itemize
-
-A full list of new features is given in:
-
-@example
-@uref{http://lilypond.org/doc/v2.13/Documentation/changes/index.html}
-@end example
-
-Happy music typesetting!  LilyPond 2.14 was brought to you by...
-
-Main development team:
+@subsubheading LilyPond 2.15.6 released!  @emph{July 26, 2011}
 
-Trevor Daniels, 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.
+We are happy to announce the release of LilyPond 2.15.6.  This
+release contains the usual number of bugfixes.
 
-Programming contributors:
-
-Sven Axelsson, Pál Benkő, Bertrand Bordage, Frédéric Bron, Peter Chubb, Hajo Dezelski, Richard
-Gay, Keith OHara, Andrew Hawryluk, Christian Hitz, Marc Hohl,
-Henning Hraban Ramm, Ian Hulin, Michael Käppler, Marek Klein,
-Kieren MacMillan, Thomas Morgan, Benjamin Peterson, Nathan Reed,
-Julien Rioux, Boris Shingarov, Patrick Schmidt, Owen Tuz, Jan Warchoł, Andrew
-Wilson, Rodolfo Zitellini.
-
-Font contributors:
-
-Keith OHara, Marc Hohl, Alexander Kobel, Carsten Steger.
-
-Documentation contributors:
-
-Colin Campbell, Andrew Hawryluk, James Lowe, Mike Moral, Ralph
-Palmer, David Pounder, Patrick Schmidt.
-
-Bug squad:
-
-James E. Bailey, Colin Campbell, Phil Holmes, Urs Liska, Ralph
-Palmer, Kieren MacMillan, Dmytro O. Redchuk.
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.
 
-Binaries support contributors:
+@newsEnd
 
-Christian Hitz.
 
-Translation contributors:
+@newsItem
+@subsubheading LilyPond 2.14.2 released!  @emph{July 25, 2011}
 
-Federico Bruni, Dénes Harmath, Jean-Charles Malahieude, Tineke de
-Munnik, Till Paala, Ralf Wildenhues, Yoshiki Sawada.
+We are happy to announce the release of LilyPond 2.14.2.  This
+fixes a few minor bugs in the stable version, and should cause no
+problems.  We recommend that everybody upgrade to this version.
 
 @newsEnd
 
index fd4631431c42812c5eccadd95c0c433a3b9eb527..0dfa491ff5028470b75ac1e1e0413e54b48ca923 100644 (file)
@@ -26,6 +26,168 @@ NOTE:
   * don't duplicate entries from news-front.itexi
 @end ignore
 
+
+
+@newsItem
+@subsubheading LilyPond 2.15.5 released!  @emph{July 12, 2011}
+
+We are happy to announce the release of LilyPond 2.15.5.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.4 released!  @emph{July 4, 2011}
+
+We are happy to announce the release of LilyPond 2.15.4.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.3 released!  @emph{June 27, 2011}
+
+We are happy to announce the release of LilyPond 2.15.3.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.2 released!  @emph{June 18, 2011}
+
+We are happy to announce the release of LilyPond 2.15.2.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.14.1 released!  @emph{June 12, 2011}
+
+We are happy to announce the release of LilyPond 2.14.1.  This
+fixes a few minor bugs in the stable version, and should cause no
+problems.  We recommend that everybody upgrade to this version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.15.1 released!  @emph{June 11, 2011}
+
+We are happy to announce the release of LilyPond 2.15.1.  This is
+the beginning of a new unstable development effort, and adds the
+usual number of bugs.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.15.0 released!  @emph{June 7, 2011}
+
+We are happy to announce the release of LilyPond 2.15.0.  This is
+the beginning of a new unstable development effort, and adds the
+usual number of bugs.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.14.0 released! @emph{June 6, 2011}
+
+We are proud to announce the release of GNU LilyPond 2.14.
+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.
+
+Many improvements have been made in the past two and a half years
+since the previous main stable version.  A few major improvements
+are:
+
+@itemize
+@item
+LilyPond is now licensed under the GNU GPL v3 or higher.
+
+@item
+The vertical spacing engine has been drastically changed, making
+it much more flexible and easier to control.
+
+@item
+Automatic beaming is now more flexible, and beam collisions are
+avoided.
+
+@end itemize
+
+A full list of new features is given in:
+
+@example
+@uref{http://lilypond.org/doc/v2.13/Documentation/changes/index.html}
+@end example
+
+Happy music typesetting!  LilyPond 2.14 was brought to you by...
+
+Main development team:
+
+Trevor Daniels, 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.
+
+Programming contributors:
+
+Sven Axelsson, Pál Benkő, Bertrand Bordage, Frédéric Bron, Peter Chubb, Hajo Dezelski, Richard
+Gay, Keith OHara, Andrew Hawryluk, Christian Hitz, Marc Hohl,
+Henning Hraban Ramm, Ian Hulin, Michael Käppler, Marek Klein,
+Kieren MacMillan, Thomas Morgan, Benjamin Peterson, Nathan Reed,
+Julien Rioux, Boris Shingarov, Patrick Schmidt, Owen Tuz, Jan Warchoł, Andrew
+Wilson, Rodolfo Zitellini.
+
+Font contributors:
+
+Keith OHara, Marc Hohl, Alexander Kobel, Carsten Steger.
+
+Documentation contributors:
+
+Colin Campbell, Andrew Hawryluk, James Lowe, Mike Moral, Ralph
+Palmer, David Pounder, Patrick Schmidt.
+
+Bug squad:
+
+James E. Bailey, Colin Campbell, Phil Holmes, Urs Liska, Ralph
+Palmer, Kieren MacMillan, Dmytro O. Redchuk.
+
+Binaries support contributors:
+
+Christian Hitz.
+
+Translation contributors:
+
+Federico Bruni, Dénes Harmath, Jean-Charles Malahieude, Tineke de
+Munnik, Till Paala, Ralf Wildenhues, Yoshiki Sawada.
+
+@newsEnd
+
+
+
 @newsItem
 @subsubheading Release candidate 7 of 2.14 - LilyPond 2.13.63 released!  @emph{May 30, 2011}
 
index 04770bad6bb77778aa4c2856e68cf4a864dec5ed..d696f1093ed1f305bbb4401762383b0c928780c9 100644 (file)
@@ -43,13 +43,13 @@ RedirectMatch ^/stable    /doc/stable
 #RedirectMatch ^/development    /doc/development
 
 #old# default doc dir
-RedirectMatch ^/doc/*$ /doc/v2.12
+RedirectMatch ^/doc/*$ /doc/v2.14
 # make attempt at `latest' symlink avoid ^v catch-all doc fix rule below
-RedirectMatch ^/doc//*latest/*(.*)$ /doc/v2.13/$1
-RedirectMatch ^/doc//*development/*(.*)$ /doc/v2.13/$1
-RedirectMatch ^/doc//*stable/*(.*)$ /doc/v2.12/$1
-RedirectMatch ^/doc//*([^v].*)$ /doc/v2.12/$1
-RedirectMatch ^(/Documentation.*)$ /doc/v2.12$1
+RedirectMatch ^/doc//*latest/*(.*)$ /doc/v2.15/$1
+RedirectMatch ^/doc//*development/*(.*)$ /doc/v2.15/$1
+RedirectMatch ^/doc//*stable/*(.*)$ /doc/v2.14/$1
+RedirectMatch ^/doc//*([^v].*)$ /doc/v2.14/$1
+RedirectMatch ^(/Documentation.*)$ /doc/v2.14$1
 RedirectMatch ^/index$ /
 
 # fix root calculation: no double slashes
index b0da0472ce98b78761aeadd9d04dfdec54e7ed23..c6cfac725ebc74e49e560c40bf780a24b215508c 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{最近更新 Thu Mar 24 14:52:33 UTC 2011
+@emph{最近更新 Wed Jul 13 10:59:12 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -84,7 +84,7 @@ LilyPond --- \TITLE\
 @item
 简介
 @*
-4506
+4564
 @tab 
 @tab 
 @tab 
@@ -102,7 +102,7 @@ LilyPond --- \TITLE\
 @item
 下载
 @*
-1183
+1195
 @tab Ben Luo
 @tab 
 @tab 
@@ -119,17 +119,17 @@ LilyPond --- \TITLE\
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">是</span>
+<span style="background-color: #25fe1f">部分地</span>
 @end html
 @end ifhtml
 @ifnothtml
-是
+部分地
 @end ifnothtml
 @tab pre-GDP
 @item
 手册
 @*
-1200
+1203
 @tab Ben Luo
 @tab 
 @tab 
@@ -146,11 +146,11 @@ LilyPond --- \TITLE\
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">是</span>
+<span style="background-color: #25fe1f">部分地</span>
 @end html
 @end ifhtml
 @ifnothtml
-是
+部分地
 @end ifnothtml
 @tab pre-GDP
 @item
diff --git a/VERSION b/VERSION
index 9f49d1cb27404f5edb34e35dbc77b71005480602..0827b98bc010d5f8af0e678796275b64bc3508c9 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=15
-PATCH_LEVEL=1
+PATCH_LEVEL=8
 MY_PATCH_LEVEL=
-VERSION_STABLE=2.14.0
-VERSION_DEVEL=2.15.0
+VERSION_STABLE=2.14.2
+VERSION_DEVEL=2.15.7
diff --git a/input/regression/ambitus-with-ligature.ly b/input/regression/ambitus-with-ligature.ly
new file mode 100644 (file)
index 0000000..c82e51c
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.14"
+
+\header {
+  texidoc = "
+A @code{\Voice} should be able to contain both an @code{Ambitus_engraver}
+and a @code{Mensural_ligature_engraver} without segfaulting.
+  "
+}
+
+\new Voice \with  {
+  \consists Ambitus_engraver
+  \consists Mensural_ligature_engraver
+} {
+  \[ c'\longa c''\longa \]
+}
diff --git a/input/regression/beam-skip.ly b/input/regression/beam-skip.ly
new file mode 100644 (file)
index 0000000..4f1dc3e
--- /dev/null
@@ -0,0 +1,22 @@
+
+\header {
+  texidoc = "Beams over skips do not cause a segfault."
+}
+
+\version "2.15.3"
+
+\layout { ragged-right = ##t }
+
+music = {
+  \clef bass r2 r4 r8 f,
+  r2 r4 g,8 r
+  r4 f, 8 r8 r2
+}
+
+beams = {
+  \repeat "unfold" 24 { s8[ s ] s[ s]}
+}
+
+\new Staff {
+  \context Voice << { \beams } { \music}>>
+}
diff --git a/input/regression/breathing-sign-custom-staff.ly b/input/regression/breathing-sign-custom-staff.ly
new file mode 100644 (file)
index 0000000..98305b0
--- /dev/null
@@ -0,0 +1,13 @@
+\version "2.15.2"
+
+\header {
+  texidoc = "Breathing signs are positioned correctly on custom staves
+which use @code{line-positions}."
+}
+
+\relative c' {
+  \override Staff.StaffSymbol #'line-positions = #'(-7 -5 -3 -1)
+  b2 \breathe b
+  \override BreathingSign #'direction = #DOWN
+  \breathe
+}
diff --git a/input/regression/chord-tremolo-other-commands.ly b/input/regression/chord-tremolo-other-commands.ly
new file mode 100644 (file)
index 0000000..f8c347b
--- /dev/null
@@ -0,0 +1,24 @@
+\version "2.15.5"
+
+\header {
+  texidoc = "
+To calculate the total duration of chord tremolos, only real notes shall be 
+counted, no other commands.
+"
+}
+
+right = \relative c'' {
+  s2
+}
+
+left = \relative c' {
+  % This tremolo contains just two notes (but three lilypond events/commands!)
+  \repeat tremolo 4 { f,16 \change Staff = "right" f'} 
+}
+
+\score {
+  \new PianoStaff <<
+    \new Staff = "right" { \right }
+    \new Staff = "left" { \clef bass \left }
+  >>
+}
diff --git a/input/regression/cue-clef-keysignature.ly b/input/regression/cue-clef-keysignature.ly
new file mode 100644 (file)
index 0000000..915d772
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.15.3"
+
+\header {
+  texidoc = "Clefs for cue notes should not influence the printed key signature."
+}
+
+vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 }
+\addQuote vIQuote { \vI }
+\score {
+  \new Staff {
+    \clef "bass" \key g \major
+    \cueDuringWithClef #"vIQuote" #DOWN #"treble" { R1 } |
+    c1 |
+    \cueDuringWithClef #"vIQuote" #DOWN #"soprano" { R1 \break R1 }
+    c1 |
+  }
+}
index 08a13bdc780cfa991a8f7ee5cffd52d35f03b1d8..a62cc103d31b6732c6d17d58e0a731f2e5e05e6d 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.14.0"
+\version "2.15.5"
 #(use-modules (srfi srfi-13)
               (ice-9 format))
 
@@ -219,6 +219,9 @@ stderr of this run."
 \test "" ##[ \once \override Beam #'beam-thickness = #0.6 #]
 \test "" ##[ \revert Staff . Stem #'thickness #]       % RevertProperty
 \test "" ##[ \revert Beam #'beam-thickness #]
+\test "NOT A BUG" ##[ \oneVoice #]     % resetting a bunch of properties
+\test "" ##[ \override StaffGrouper #'(staff-staff-spacing basic-distance) = #7 #] % nested properties
+\test "" ##[ \revert StaffGrouper #'(staff-staff-spacing basic-distance) #] % nested properties
 
 %% \applyOutput
 \test "" ##[ \applyOutput #'Foo #(lambda (arg) (list)) #]
@@ -241,6 +244,12 @@ stderr of this run."
 %% \ottava
 \test "" ##[ \ottava #1 #] % OttavaMusic
 
+%% \tweak
+\test "" ##[ < \tweak #'duration-log #2 c > #]
+\test "" ##[ < c \tweak #'transparent ##t e > #]
+\test "" ##[ < \tweak #'color #'(1.0 0.0 0.0) \tweak #'duration-log #2 c > #]
+\test "" ##[ c-\tweak #'font-size #3 -> #]
+
 %% end test.
 
 #(read-hash-extend #\[ #f) %{ ] %}
diff --git a/input/regression/dynamics-alignment-autobreak.ly b/input/regression/dynamics-alignment-autobreak.ly
new file mode 100644 (file)
index 0000000..62a1e97
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.15.7"
+
+\header {
+  texidoc = "If a dynamic has an explicit direction that differs from the 
+dynamic line spanner's direction, automatically break the dynamic line spanner.
+"
+}
+
+\relative c' {
+  c1^\<
+  c1_\>
+  f,1\p
+
+  c'1^\<
+  c1_\p^\>
+  c1\!
+}
diff --git a/input/regression/dynamics-alignment-breaker-linebreak.ly b/input/regression/dynamics-alignment-breaker-linebreak.ly
new file mode 100644 (file)
index 0000000..b4e9f2d
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.15.7"
+
+\header {
+  texidoc = "@code{\\breakDynamicSpan} shall also work if a 
+dynamic spanner crosses a line break.
+"
+}
+
+\relative c' {
+  % spanner really crosses linebreak:
+  c1\<\breakDynamicSpan c'' \break
+  c,,1
+  % new spanner immediately after linebreak (with broken spanner):
+  c''1\>\breakDynamicSpan \break
+  c,,1\<
+  f,1\breakDynamicSpan\p
+}
diff --git a/input/regression/dynamics-alignment-breaker-order.ly b/input/regression/dynamics-alignment-breaker-order.ly
new file mode 100644 (file)
index 0000000..1647b20
--- /dev/null
@@ -0,0 +1,18 @@
+\version "2.15.7"
+
+\header {
+  texidoc = "@code{\\breakDynamicSpan} work whether it is placed together 
+with the start or the end of a spanner.  Both lines should be identical.
+"
+}
+
+\relative c {
+  c1\< c''
+  % break directly before and after \> :
+  c,1\breakDynamicSpan\>\breakDynamicSpan 
+  f,1\p \break
+
+  c1\<\breakDynamicSpan c''
+  c,1\>
+  f,1\breakDynamicSpan\p
+}
diff --git a/input/regression/dynamics-alignment-breaker-subsequent-spanner.ly b/input/regression/dynamics-alignment-breaker-subsequent-spanner.ly
new file mode 100644 (file)
index 0000000..f2a3971
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.15.7"
+
+\header {
+  texidoc = "@code{\\breakDynamicSpan} shall only have an effect on the current
+spanner, not on subsequent spanners.
+"
+}
+
+\relative c' {
+  % Check that the effect of \breakDynamic span is only for the current
+  % spanner and not for the following spanners, too.
+  c1\<\breakDynamicSpan c''
+  c,,1\>
+  f,1\p % <= the \> and the \p should be aligned!
+}
diff --git a/input/regression/dynamics-alignment-no-line-linebreak.ly b/input/regression/dynamics-alignment-no-line-linebreak.ly
new file mode 100644 (file)
index 0000000..28dbdce
--- /dev/null
@@ -0,0 +1,14 @@
+\version "2.15.6"
+
+\header {
+  texidoc = "Setting the style of a @code{DynamicTextSpanner} to @code{'none}
+to hide the line altogether should also work over line breaks.
+"
+}
+
+\relative c'' {
+  \override DynamicTextSpanner #'style = #'none
+  c2\cresc g,2
+  \break
+  g2 c'2\f
+}
index 9108433c12f358c7757ce791818b40406c479a95..c9783d2c28df0671dd582cecadcdebfedbe41b86 100644 (file)
@@ -36,28 +36,28 @@ vlnone = \new Staff {
   \tempo 4 = 96
 
   a4\f d fis8-. a-. r4
-  d16(\downbow cis b a) g4 \breathe e8\p( g) fis4
+  d16(\downbow cis b a) g4 \breathe e8\p( g) fis4 |
 
   e4\< g8 fis g4-_\mp\>
     \st "III"
     b8-_\startTextSpan a-_\stopTextSpan
     b4\p\<( d8 cis) d4(-. fis8-.^"II" e-.^"II")
   fis16(\mf\downbow g a b c\> b a g) fis(\upbow e d c) b(\downbow a g fis)
-  e8-.\mp\upbow r e'-.\upbow^"tip" r e,4->^"mb" r4
+  e16\mp\upbow ~ e-.\mp r8 e'-.\upbow^"tip" r e,4->^"mb" r4 |
 
   \key d \minor
   \time 3/4
   \tempo 4 = 120
-  d4.\f^"pizz." e8 f4
+  d4.\mf^"pizz." e8 f4
   f'4. e8 d4
-  d,4.\p c8 bes4
+  d,4.\mp c8 bes4 |
   \tempo 4 = 88
-  a16\mp e' a e' a,,32\f e' a e' r8 r4
+  a16\p e' a e' a,,32\f e' a e' r8 r4
   d4^"arco"^"lh"\> \acciaccatura { c8 } bes4 \acciaccatura { a8 } g4
   \st "III"
   fis16\p\startTextSpan a_"II" g a_"II" a a_"II" bes a_"II"
     c a_"II" bes a_"II"\stopTextSpan
-  a4\breathe a,\breathe r4
+  a4\breathe a,\breathe r4 |
 }
 
 
diff --git a/input/regression/footnote-auto-numbering-page-reset.ly b/input/regression/footnote-auto-numbering-page-reset.ly
new file mode 100644 (file)
index 0000000..06a347e
--- /dev/null
@@ -0,0 +1,40 @@
+\version "2.15.7"
+\header {
+  texidoc = "Lilypond does footnotes."
+}
+
+\paper {
+  footnote-numbering-function = #symbol-footnotes
+}
+
+#(set-default-paper-size "a6")
+\book {
+
+\markup {
+  a \footnote b c
+  \footnote d e
+  \footnote f g
+}
+
+\markup { h i }
+
+\relative c' {
+\autoFootnoteGrob #'NoteHead #'(1 . -1) \markup { j }
+a b c d }
+
+\pageBreak
+
+\markup { k \footnote l m }
+
+\relative c' { a1 }
+
+\relative c' {
+  d4 e
+  < f  a-\autoFootnote #'(1 . -1) \markup { n } c >
+  \autoFootnoteGrob #'Beam #'(1 . 1) \markup { o }
+  \autoFootnoteGrob #'Hairpin #'(1 . 1) \markup { p }
+  a8\< [ b c d ] a4 b c |
+  d a b c |
+  d a b c |
+  d a b c\f |
+}}
diff --git a/input/regression/footnote-auto-numbering.ly b/input/regression/footnote-auto-numbering.ly
new file mode 100644 (file)
index 0000000..fe4babe
--- /dev/null
@@ -0,0 +1,40 @@
+\version "2.15.7"
+\header {
+  texidoc = "Lilypond does footnotes."
+}
+
+\paper {
+  reset-footnotes-on-new-page = ##f
+}
+
+#(set-default-paper-size "a6")
+\book {
+
+\markup {
+  a \footnote b c
+  \footnote d e
+  \footnote f g
+}
+
+\markup { h i }
+
+\relative c' {
+\autoFootnoteGrob #'NoteHead #'(1 . -1) \markup { j }
+a b c d }
+
+\pageBreak
+
+\markup { k \footnote l m }
+
+\relative c' { a1 }
+
+\relative c' {
+  d4 e
+  < f  a-\autoFootnote #'(1 . -1) \markup { n } c >
+  \autoFootnoteGrob #'Beam #'(1 . 1) \markup { o }
+  \autoFootnoteGrob #'Hairpin #'(1 . 1) \markup { p }
+  a8\< [ b c d ] a4 b c |
+  d a b c |
+  d a b c |
+  d a b c\f |
+}}
index 23e9035a7128688ffb8ab050ab39291fb6ed843c..6159b5dc5f35cf3ad6caaebd26ebc297dec71570 100644 (file)
@@ -7,6 +7,10 @@ can be overrided."
 
 #(set-default-paper-size "a6")
 
+\paper {
+  footnote-auto-numbering = ##f
+}
+
 \book {
 
 \new Staff \with { \consists "Footnote_engraver" }
index 6efca6671b53ea6ceae5af321baa17f47bc0e37b..8129d6fd4b982e369d8c7aa83dcb0d96666cb8a3 100644 (file)
@@ -6,7 +6,10 @@ annotation goes to the correct page."
 
 #(set-default-paper-size "a6")
 
-\paper { ragged-last-bottom = ##f }
+\paper {
+  ragged-last-bottom = ##f
+  footnote-auto-numbering = ##f
+}
 
 \book {
 
index f13347d31aeb3f73ef988fa96ae59732bfe27357..a2b1c658034654c93efb5a85e77b2e2bdd00595d 100644 (file)
@@ -3,6 +3,10 @@
   texidoc = "Lilypond does footnotes."
 }
 
+\paper {
+  footnote-auto-numbering = ##f
+}
+
 #(set-default-paper-size "a6")
 \book {
 
diff --git a/input/regression/glissando-broken-multiple.ly b/input/regression/glissando-broken-multiple.ly
new file mode 100644 (file)
index 0000000..906f984
--- /dev/null
@@ -0,0 +1,25 @@
+\header {
+  texidoc = "When broken, glissandi can span multiple lines."
+
+}
+\version "2.15.0"
+\paper {
+  ragged-right = ##t
+}
+
+\relative c'' {
+  \override Glissando #'breakable = ##t
+  \override Glissando #'after-line-breaking = ##t
+  d1\glissando
+  \break s1
+  \break s1
+  \break s1
+  c,1^\ff\trill
+  % Subsequent glissando prints correctly instead of
+  % using the Y positions from the previous one.
+  a'1\glissando
+  \break s1
+  \break s1
+  \break s1
+  e1^\ff\trill
+}
diff --git a/input/regression/grace-slashed-no-slur.ly b/input/regression/grace-slashed-no-slur.ly
new file mode 100644 (file)
index 0000000..b7873e1
--- /dev/null
@@ -0,0 +1,11 @@
+\version "2.15.6"
+
+\header
+{
+  texidoc = "Create grace notes with slashed stem, but no slur. That can be used
+  when the grace note is tied to the next note.
+"
+}
+\relative {
+  \slashedGrace c16~ c1
+}
diff --git a/input/regression/horizontal-bracket-tweak.ly b/input/regression/horizontal-bracket-tweak.ly
new file mode 100644 (file)
index 0000000..ebd7069
--- /dev/null
@@ -0,0 +1,20 @@
+\version "2.15.5"
+
+\header {
+  texidoc = "Horizontal brackets are created with the correct event-cause, ensuring
+tweaks are applied to the correct spanner."
+}
+
+\layout {
+  \context {
+    \Voice
+    \consists "Horizontal_bracket_engraver"
+  }
+}
+
+\relative c' {
+  c1-\tweak #'thickness #6 \startGroup
+  c1\startGroup
+  c1\stopGroup
+  c1\stopGroup
+}
diff --git a/input/regression/lyric-combine-derived-voice.ly b/input/regression/lyric-combine-derived-voice.ly
new file mode 100644 (file)
index 0000000..a5f4316
--- /dev/null
@@ -0,0 +1,18 @@
+\version "2.15.4"
+\header {
+  texidoc = "For Voice-derived contexts like CueVoice, the lyrics should
+still start with the first note."
+}
+
+\score {
+  \new Staff <<
+    \new Voice \relative c'' {
+      g2 
+      <<
+          { \voiceOne r2 }
+          \new CueVoice = "cue" { \voiceTwo g4 g }
+      >>
+  }
+  \context Lyrics \lyricsto "cue" { A B }
+  >>
+}
diff --git a/input/regression/lyric-combine-empty-warning.ly b/input/regression/lyric-combine-empty-warning.ly
new file mode 100644 (file)
index 0000000..59c68ca
--- /dev/null
@@ -0,0 +1,23 @@
+\version "2.15.5"
+
+\header {
+
+  texidoc = "If lyrics are assigned to a non-existing voice, a warning should
+be printed.  However, if the lyrics context does not contain any lyrics, then
+no warning should be printed."
+
+}
+
+#(ly:set-option 'warning-as-error #f)
+<<
+  \new Staff
+    \new Voice = "notes" {
+      c1
+    }
+  % This should not give a warning (empty lyrics, existing voice):
+  \new Lyrics \lyricsto "notes" \lyricmode { }
+  % This should give a warning (non-existing voice):
+  \new Lyrics \lyricsto "not-existing-notes" \lyricmode { Test }
+  % This should NOT give a warning (non-existing voice, but also no lyrics):
+  \new Lyrics \lyricsto "not-existing-notes" \lyricmode { }
+>>
diff --git a/input/regression/markup-center-align-nocollision.ly b/input/regression/markup-center-align-nocollision.ly
new file mode 100644 (file)
index 0000000..ac3d245
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.15.7"
+
+\header {
+  texidoc = "Text markup using @code{center-align} or @code{center-column} shall
+still reserve space for its whole width and not overwrite the previous stencil."
+}
+
+\markup{\left-align { AAA BB }}
+\markup{\center-align { AAA BB }}
+\markup{\right-align { AAA BB }}
+
+% Here the two center-columns should not collide with the +
+\markup \line {
+  \center-column { \line {XXX} \line {Y} }
+  "+"
+  \center-column { \line {XXX} \line {Y}}
+}
diff --git a/input/regression/metronome-mark-loose-column.ly b/input/regression/metronome-mark-loose-column.ly
new file mode 100644 (file)
index 0000000..c9026b3
--- /dev/null
@@ -0,0 +1,27 @@
+\version "2.15.6"
+
+\header {
+  texidoc = "Metronome marks aligned on notes do not interfere with
+the positioning of loose columns in other staves.  Here the loose
+column supporting the clef is correctly placed immediately before
+the second note in the lower staff."
+}
+
+\score {
+  <<
+    \new Staff \relative c' {
+      c8 c c c
+      \tempo 4 = 60
+      c2
+    }
+    \new Staff \relative c' {
+      c2 \clef bass c2
+    }
+  >>
+  \layout {
+    \context {
+      \Score
+      \override NonMusicalPaperColumn #'stencil = #ly:paper-column::print
+    }
+  }
+}
diff --git a/input/regression/multi-measure-rest-standard.ly b/input/regression/multi-measure-rest-standard.ly
new file mode 100644 (file)
index 0000000..a5809f3
--- /dev/null
@@ -0,0 +1,20 @@
+\header {
+  texidoc = "Only whole, breve, longa and maxima rests are used by default for multi-measure rests."
+}
+
+\version "2.15.2"
+
+\paper {
+  ragged-right = ##t
+  indent = 0
+}
+
+\new Staff {
+  \time 3/8 R4.
+  \time 2/4 R2
+  \time 2/2 R1
+  \time 2/1 R\breve
+  \break
+  \time 4/1 R\longa
+  \time 8/1 R\maxima
+}
diff --git a/input/regression/multi-measure-rest-tweaks.ly b/input/regression/multi-measure-rest-tweaks.ly
new file mode 100644 (file)
index 0000000..5a70e23
--- /dev/null
@@ -0,0 +1,14 @@
+\header {
+  texidoc = "Multi-measure rests standard values can be tweaked."
+}
+
+\version "2.15.2"
+\new Staff {
+  \override MultiMeasureRest #'usable-duration-logs = #'(2 1)
+  \time 1/4 R4-"Use non-standard multi-measure rests."
+  \time 2/4 R2
+}
+\new Staff {
+  \override MultiMeasureRest #'round-to-longer-rest = ##t
+  \time 3/2 R1.-"Round to the longer rest." \time 7/2 R\breve..
+}
diff --git a/input/regression/multi-measure-rest-usebreve.ly b/input/regression/multi-measure-rest-usebreve.ly
deleted file mode 100644 (file)
index 2ed4f9c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-\version "2.14.0"
-\header{
-
-  texidoc="For longer measure lengths, the breve rest is used."
-
-}
-
-\layout {
-  \context {
-    \Score
-    skipBars = ##t
-  }
-  ragged-right = ##t   
-}
-
-
-{
-  \time 8/4
-  R1*12
-  \time 4/4
-  R1*6
-}
-
-
index 90224e395710f2d17d4644624cfbc7c775c990e4..94e93ea1c268362d751cc1d67ba4c22dbf1b2809 100644 (file)
@@ -8,8 +8,7 @@
   \context {
     \Score
     \override VerticalAxisGroup #'staff-staff-spacing =
-      #'((basic-distance . 20)
-         (stretchability . 0))
+      #'((minimum-distance . 20))
   }
 }
 
diff --git a/input/regression/phrasing-slur-multiple.ly b/input/regression/phrasing-slur-multiple.ly
new file mode 100644 (file)
index 0000000..203a6ec
--- /dev/null
@@ -0,0 +1,21 @@
+\version "2.15.4"
+
+#(ly:set-option 'warning-as-error #f)
+
+\header {
+  texidoc = "LilyPond does not support multiple concurrent phrasing slurs with the 
+parentheses syntax.  In this case, warnings will be given and the nested
+slur will not be generated.  However, one can can create a second slur with
+a different spanner-id."
+}
+
+altPhSlur = #(make-music 'PhrasingSlurEvent 'span-direction START 'spanner-id "alt")
+altPhSlurEnd = #(make-music 'PhrasingSlurEvent 'span-direction STOP 'spanner-id "alt")
+
+\relative c'' { 
+  % This will give warnings ("Already have phrasing slur" and "Cannot end phrasing slur")
+  c4\(\( d4\)\( e4\) f\) |
+  % This will give two overlapping slurs:
+  d\(  d\altPhSlur e\) f\altPhSlurEnd |
+  
+}
index be8016ffa563e99cdf638ca92326cceaa0254457..13e811e0e5b3b02c60859f580c1273b9bb6592db 100644 (file)
@@ -34,7 +34,7 @@ Note: lilypond must be compiled with --disable-optimising for this file to work.
   (ly:progress "\n\n~A properties, top ~a rounded to ~a\n\n~a"
    what count rnd
    (string-join
-    (map (lambda (x) (format "~30a: ~6@a" (car x) (cdr x)))
+    (map (lambda (x) (format #f "~30a: ~6@a" (car x) (cdr x)))
      (ly:truncate-list! 
     (sort alist prop-stats>?) count))
     "\n"))))
diff --git a/input/regression/remove-empty-context-mod.ly b/input/regression/remove-empty-context-mod.ly
new file mode 100644 (file)
index 0000000..b6cc561
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.15.6"
+
+\header {
+  texidoc = "@code{\\RemoveEmptyStaves} is defined separately from
+context definitions so it can be used outside of @code{\\layout} blocks."
+}
+
+\paper {
+  ragged-right = ##t
+}
+
+\new Staff \RemoveEmptyStaves {
+  c'1 \break
+  r1
+}
index 8c878445103df66ae2362e80cbd3d2121b77b3c3..7ce98247f2d717d262e472e3d4bb7c9711469bac 100644 (file)
@@ -1,30 +1,41 @@
 \version "2.14.0"
 \header {
-texidoc = "Whole and half rests moving outside the staff should get
+texidoc = "Breve, whole and half rests moving outside the staff should get
 ledger lines."
 }
 
 
-\paper { ragged-right = ##t } 
+\paper { ragged-right = ##t }
+
+rPos =
+#(define-music-function (parser location y) (number?)
+  #{ \override Rest #'staff-position = #$y #})
 
 {
-   \override Rest  #'staff-position = #4
-  r1 \override Rest  #'staff-position = #5
-  r1 \override Rest  #'staff-position = #6
-  
-  r1 \override Rest  #'staff-position = #-6
-  r1 \override Rest  #'staff-position = #-7
-  r1 \override Rest  #'staff-position = #-8
-  r1
-
-   \override Rest  #'staff-position = #6
-  r2 \override Rest  #'staff-position = #7
-  r2 \override Rest  #'staff-position = #8
-  
-  r2 \override Rest  #'staff-position = #-4
-  r2 \override Rest  #'staff-position = #-5
-  r2 \override Rest  #'staff-position = #-6
-  r2
+  \set Score.timing = ##f
+  \rPos #2
+  r\breve \rPos #4
+  r \rPos #5
+  r \rPos #-4
+  r \rPos #-6
+  r \rPos #-7
+  r
+
+  \rPos #2
+  r1 \rPos #4
+  r \rPos #5
+  r \rPos #-6
+  r \rPos #-7
+  r \rPos #-8
+  r
+
+  \rPos #4
+  r2 \rPos #6
+  r \rPos #7
+  r \rPos #-4
+  r \rPos #-6
+  r \rPos #-7
+  r
 
 }
 
index 4136171a102b551a970acbafe48957593f704f76..33296d1433d8d17f93d4498ba39e8148a22c3af1 100644 (file)
@@ -25,7 +25,7 @@
                     (set! private-note-counter (1+ private-note-counter))
                     (let ((text (ly:engraver-make-grob engraver 'TextScript event)))
                       (ly:grob-set-property! text 'text
-                                             (format "~a.~a" instance-id
+                                             (format #f "~a.~a" instance-id
                                                      private-note-counter))))))))))
   }
 }
diff --git a/input/regression/set-once.ly b/input/regression/set-once.ly
new file mode 100644 (file)
index 0000000..186232c
--- /dev/null
@@ -0,0 +1,29 @@
+\version "2.15.7"
+
+\header {
+
+  texidoc = "@code{\once \set} should change a context property value for just one timestep
+and then return to the previous value."
+
+}
+\relative {
+  \set fingeringOrientations = #'(left)
+  <e-1>1 |
+  \once \set fingeringOrientations = #'(right)
+  <e-1> |
+  <e-1> -"left" |
+
+  \once \set fingeringOrientations = #'(right)
+  <e-1>
+  \once \set fingeringOrientations = #'(up)
+  <e-1>
+  <e-1>-"left"
+
+  \set fingeringOrientations = #'(left)
+  <e-1>
+  \once \set fingeringOrientations = #'(up)
+  \once \set fingeringOrientations = #'(right)
+  <e-1>-"right"
+  <e-1>-"left"
+}
diff --git a/input/regression/slur-grace.ly b/input/regression/slur-grace.ly
new file mode 100644 (file)
index 0000000..83d650c
--- /dev/null
@@ -0,0 +1,12 @@
+\version "2.15.4"
+
+\header {
+  texidoc = "Appoggiatura and acciaccaturas use a different slur than the
+default, so they produce a nested slur without warnings."
+}
+
+\relative c'' {
+  c4( \acciaccatura e8 d4 e4 f) |
+  c4( \appoggiatura e8 d4 e4 f) |
+  c4  \appoggiatura e8 d4 e4 f |
+}
diff --git a/input/regression/slur-multiple-linebreak.ly b/input/regression/slur-multiple-linebreak.ly
new file mode 100644 (file)
index 0000000..763f623
--- /dev/null
@@ -0,0 +1,26 @@
+\version "2.15.5"
+
+#(ly:set-option 'warning-as-error #f)
+
+\header {
+  texidoc = "An additional opening slur during a running slur should be ignored
+(and a warning printed), but never influence the slur's extents."
+}
+
+\paper { ragged-right = ##t }
+
+\relative c' {
+  \key fis \major
+  c1(
+  \break
+  a2 b4 c)
+}
+
+\relative c' {
+  \key fis \major
+  c1(
+  \break
+  a2( b4 c)
+%   ^ extra SlurEvent
+}
+%% END
\ No newline at end of file
diff --git a/input/regression/slur-multiple.ly b/input/regression/slur-multiple.ly
new file mode 100644 (file)
index 0000000..21cb444
--- /dev/null
@@ -0,0 +1,21 @@
+\version "2.15.5"
+
+#(ly:set-option 'warning-as-error #f)
+
+\header {
+  texidoc = "LilyPond does not support multiple concurrent slurs with the 
+parentheses syntax.  In this case, warnings will be given and the nested
+slur will not be generated.  However, one can can create a second slur with
+a different spanner-id."
+}
+
+altSlur = #(make-music 'SlurEvent 'span-direction START 'spanner-id "alt")
+altSlurEnd = #(make-music 'SlurEvent 'span-direction STOP 'spanner-id "alt")
+
+\relative c'' { 
+  % This will give warnings ("Already have slur" and "Cannot end slur")
+  c4(( d4)( e4) f) |
+  % This will give two overlapping slurs:
+  d(  d\altSlur e) f\altSlurEnd |
+  
+}
index b683410d5f3a09b8e12910093df95473ed6fbc08..267e20588f427eac0127a1425d1d08d60dbc85da 100644 (file)
@@ -1,17 +1,20 @@
 \version "2.14.0"
 \header {
-  texidoc="Festival song synthesis output supports
+  texidoc = "Festival song synthesis output supports
 lyrics which are not complete words.
 "
 }
 \include "festival.ly"
-#(set! *skip-word* #f)
+#(*skip-word* #f)
 
 \festival #"song-skip-noword.xml" { \tempo 4 = 100 }
-\relative c' { c c g' }
+\relative c' { c4 c g' }
 \addlyrics {
   twin -- \skip 4
   kle
 }
+
 #(ly:progress "song-skip-noword")
 #(ly:progress "~a" (ly:gulp-file "song-skip-noword.xml"))
+
+#(*skip-word* "-skip-")
index 28ed6567b8bdcc9e838a478e9cb85c751d8471d7..cfde182339c1dc16d57c68468a81ab3b3572ae55 100644 (file)
@@ -1,9 +1,9 @@
-\version "2.14.0"
+\version "2.15.2"
 
-\header { texidoc = "Stanza numbers are put left of their lyric.  They
-are aligned in a column."  }
-
-\layout { ragged-right = ##t }
+\header {
+  texidoc = "Stanza numbers are put left of their lyric.  They
+are aligned in a column."
+}
 
 \relative c'' { r4 r4 c4 c4 }
 \addlyrics {
@@ -13,9 +13,6 @@ are aligned in a column."  }
 }
 \addlyrics {
   \skip 2
-  \set stanza = "2."
+  \set stanza = \markup { 2. }
   FFFooooo8
 }
-
-
-
diff --git a/input/regression/stem-tremolo-note-column.ly b/input/regression/stem-tremolo-note-column.ly
new file mode 100644 (file)
index 0000000..b09bd02
--- /dev/null
@@ -0,0 +1,12 @@
+\version "2.15.6"
+\header{
+  texidoc="Stem tremolos count in a note column's horizontal skyline.
+"
+}
+
+
+\relative c'' {
+  \autoBeamOff
+  \override NoteHead #'stencil = #(ly:make-stencil '() '(0 . 0) '(0 . 0))
+  \repeat unfold 8 { b8:32 }
+}
diff --git a/input/regression/system-start-bar-collapse-staffspace.ly b/input/regression/system-start-bar-collapse-staffspace.ly
new file mode 100644 (file)
index 0000000..94af602
--- /dev/null
@@ -0,0 +1,12 @@
+\version "2.15.6"
+
+\header {
+  texidoc = "When the staff-space is increased, the system-start delimiter
+should still be collapsed (i.e. the collapse-height should not give an absolute
+length, but a multiple of staff-spaces)."
+}
+
+\new Staff \with { \override StaffSymbol #'staff-space = #1.4 }
+{
+  a4 b c d 
+}
diff --git a/input/regression/text-spanner-full-rest.ly b/input/regression/text-spanner-full-rest.ly
new file mode 100644 (file)
index 0000000..97e5be9
--- /dev/null
@@ -0,0 +1,12 @@
+\version "2.15.2"
+
+\header {
+  texidoc = "Text spanners ending on full-measure rests do
+not stop prematurely on preceding note heads."
+}
+
+\relative c'' {
+  a1\startTextSpan
+  b1
+  R1\stopTextSpan
+}
diff --git a/input/regression/tie-pitched-trill.ly b/input/regression/tie-pitched-trill.ly
new file mode 100644 (file)
index 0000000..79c1df8
--- /dev/null
@@ -0,0 +1,12 @@
+\version "2.15.5"
+
+\header {
+  texidoc = "The pitch of a pitched trill should not trigger a warning for 
+  unterminated ties."
+}
+
+\relative c' {
+  \pitchedTrill
+  c1~\startTrillSpan d
+  c1\stopTrillSpan
+}
diff --git a/input/regression/tuplet-bracket-direction.ly b/input/regression/tuplet-bracket-direction.ly
new file mode 100644 (file)
index 0000000..e761462
--- /dev/null
@@ -0,0 +1,20 @@
+\version "2.14.0"
+
+\header {
+  texidoc = "The direction of tuplet brackets is the direction
+of the majority of the stems under the bracket, with ties going
+to UP.
+"
+}
+
+\relative c'' {
+  \times 2/3 { r r r }
+  \times 2/3 { r c r }
+  \times 2/3 { r a r }
+  \times 2/3 { c' f,, r }
+  \times 2/3 { f, c'' r }
+  \times 2/3 { a a c }
+  \times 2/3 { c c a }
+  \times 2/3 { a a a }
+  \times 2/3 { c c c }
+}
diff --git a/input/regression/tuplet-bracket-outside-staff-priority.ly b/input/regression/tuplet-bracket-outside-staff-priority.ly
new file mode 100644 (file)
index 0000000..fa6b082
--- /dev/null
@@ -0,0 +1,21 @@
+\version "2.15.6"
+\header {
+
+  texidoc = "Tuplet brackets' outside staff priority can be
+set.  Brackets, by default, carry their numbers with them."
+
+}
+
+\relative c'' {
+  % Plain old tuplet
+  \times 2/3 { a8 r a }
+  % With nothing set, collisions abound both horizontally and
+  % vertically
+  \times 2/3 { a8^\espressivo r a^\espressivo }
+  % Setting the staff priority prevents collisions
+  \override TupletBracket #'outside-staff-priority = #1
+  \times 2/3 { a8^\espressivo r a^\espressivo }
+  % Note that, with the outside-staff-priority set, this bracket
+  % should be at the same vertical level as the first one
+  \times 2/3 { a8 r a }
+}
diff --git a/input/regression/tuplet-number-outside-staff-priority.ly b/input/regression/tuplet-number-outside-staff-priority.ly
new file mode 100644 (file)
index 0000000..7b78629
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.15.1"
+\header {
+
+  texidoc = "Tuplet numbers' outside staff priority can be
+set."
+
+}
+
+\relative c'' {
+  \times 2/3 { a8\trill a\trill a\trill }
+  \override TupletNumber #'outside-staff-priority = #1
+  \times 2/3 { a8\trill a\trill a\trill }
+  \override Script #'outside-staff-priority = #2
+  \times 2/3 { a8\trill a\trill a\trill }
+}
index 2fd49f5162a2547c57606d76a5ddd4d0386e5cfd..cf957449ec784ecff5f384376c48b930e35fd7cb 100644 (file)
@@ -226,9 +226,6 @@ Align_interface::internal_get_minimum_translations (Grob *me,
          if (Page_layout_problem::read_spacing_spec (spec, &min_distance, ly_symbol2scm ("minimum-distance")))
            dy = max (dy, min_distance);
 
-         if (include_fixed_spacing)
-           dy = max (dy, Page_layout_problem::get_fixed_spacing (elems[j-1], elems[j], spaceable_count, pure, start, end));
-
          if (include_fixed_spacing && Page_layout_problem::is_spaceable (elems[j]) && last_spaceable_element)
            {
              // Spaceable staves may have
@@ -294,7 +291,7 @@ Align_interface::align_elements_to_ideal_distances (Grob *me)
   System *sys = me->get_system ();
   if (sys)
     {
-      Page_layout_problem layout (NULL, SCM_EOL, scm_list_1 (sys->self_scm ()));
+      Page_layout_problem layout (NULL, SCM_EOL, scm_list_1 (sys->self_scm ()), 0);
       layout.solution (true);
     }
   else
index 0b399fd2482e5fa8ef9da603a416471dd9281ac8..e0bd31663f89d1134018b224976ffc237adfb7d8 100644 (file)
@@ -666,6 +666,15 @@ add_grobs_of_one_priority (Skyline_pair *const skylines,
     }
 }
 
+bool
+Axis_group_interface::has_outside_staff_parent (Grob *me)
+{
+  return (me
+          ? (scm_is_number (me->get_property ("outside-staff-priority"))
+             || has_outside_staff_parent (me->get_parent (Y_AXIS)))
+          : false);
+}
+
 // TODO: it is tricky to correctly handle skyline placement of cross-staff grobs.
 // For example, cross-staff beams cannot be formatted until the distance between
 // staves is known and therefore any grobs that depend on the beam cannot be placed
@@ -699,7 +708,7 @@ Axis_group_interface::skyline_spacing (Grob *me, vector<Grob*> elements)
   Skyline_pair skylines;
   for (i = 0; i < elements.size ()
         && !scm_is_number (elements[i]->get_property ("outside-staff-priority")); i++)
-    if (!to_boolean (elements[i]->get_property ("cross-staff")))
+    if (!(to_boolean (elements[i]->get_property ("cross-staff")) || has_outside_staff_parent (elements[i])))
       add_boxes (elements[i], x_common, y_common, &boxes, &skylines);
 
   SCM padding_scm = me->get_property ("skyline-horizontal-padding");
index c4efb46b687c17ac4cafb93cabef601915f9584a..b9872b2cd5835ae45501c8c496a45cb0bc16f1ae 100644 (file)
@@ -101,13 +101,12 @@ Balloon_interface::internal_balloon_print (Grob *me, Grob *p, Offset off)
 
   SCM bt = me->get_property ("text");
   SCM chain = Font_interface::text_font_alist_chain (me);
-
   SCM stencil = Text_interface::interpret_markup (me->layout ()->self_scm (),
-                                                 chain, bt);
-
+                                                  chain, bt);
   Stencil *text_stil = unsmob_stencil (stencil);
-
+  
   Offset z1;
+
   for (int i = X_AXIS; i < NO_AXES; i++)
     {
       Axis a ((Axis)i);
index 8a30752c386eccd8294b181c5dd18159c2b492d2..1bb0a209a859666c271dfed1c955d556723ecfa0 100644 (file)
@@ -555,6 +555,8 @@ Beam::print (SCM grob)
   Spanner *me = unsmob_spanner (grob);
   Grob *commonx = 0;
   vector<Beam_segment> segments = get_beam_segments (me, &commonx);
+  if (!segments.size ())
+    return SCM_EOL;
 
   Interval span;
   if (normal_stem_count (me))
@@ -974,7 +976,11 @@ Beam::no_visible_stem_positions (Grob *me, Interval default_value)
     }
 
   Direction dir = get_grob_direction (me);
-  Real y = head_positions[dir]
+
+  if (!dir)
+    programming_error ("The beam should have a direction by now.");
+
+  Real y = head_positions.linear_combination (dir)
     * 0.5 * Staff_symbol_referencer::staff_space (me)
     + dir * get_beam_translation (me) * (multiplicity.length () + 1);
 
index 73f7db34ae973b2d7a7c8fd487be638715a40a34..76d6e891f6aa45979e398bb82fbccca2836c4d0a 100644 (file)
@@ -69,6 +69,13 @@ Break_align_engraver::derived_mark () const
 void
 Break_align_engraver::acknowledge_break_alignable (Grob_info inf)
 {
+  /*
+    Special case for MetronomeMark: filter out items which will be aligned
+    on note heads rather than prefatory material
+  */
+  if (!Item::is_non_musical (inf.item ()))
+    return;
+
   if (!align_)
     create_alignment (inf);
 
@@ -95,7 +102,7 @@ Break_align_engraver::acknowledge_break_aligned (Grob_info inf)
       SCM align_name = item->get_property ("break-align-symbol");
       if (!scm_is_symbol (align_name))
        return;
-         
+
       if (!align_)
        create_alignment (inf);
 
index 09fd1d7c516e7b35cd1ce85f1e944d7b9869ebd1..a59bd650703fe2aafc2ea40e58b2e85492c78a6b 100644 (file)
 
 #include "breathing-sign.hh"
 
-#include "staff-symbol-referencer.hh"
-#include "directional-element-interface.hh"
-#include "output-def.hh"
-#include "lookup.hh"
 #include "dimensions.hh"
 #include "direction.hh"
-#include "text-interface.hh"
+#include "directional-element-interface.hh"
 #include "font-interface.hh"
 #include "grob.hh"
-
-/*
-  TODO: thickness should be a grob property (unit: linethickness)
-  rather than hardwired to (staff_space / 6).
-*/
+#include "lookup.hh"
+#include "output-def.hh"
+#include "staff-symbol.hh"
+#include "staff-symbol-referencer.hh"
+#include "text-interface.hh"
 
 /*
   UGH : this is full of C&P code. Consolidate!  --hwn
@@ -177,14 +173,20 @@ Breathing_sign::offset_callback (SCM smob)
       set_grob_direction (me, d);
     }
 
-  Real inter = Staff_symbol_referencer::staff_space (me) / 2;
-  int sz = Staff_symbol_referencer::line_count (me) - 1;
-  return scm_from_double (inter * sz * d);
+  Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
+  if (staff)
+    {
+      Interval iv = Staff_symbol::line_span (staff);
+      Real inter = Staff_symbol::staff_space (me) / 2;
+      return scm_from_double (inter * iv[d]);
+    }
+
+  return scm_from_double (0.0);
 }
 
 ADD_INTERFACE (Breathing_sign,
               "A breathing sign.",
-              
+
               /* properties */
               "direction "
               );
index 2534f6992b126d9926d806a7b11513fdbc8b3aa2..a2c606f472897c58c6c17d221aa806902114a9dc 100644 (file)
@@ -27,34 +27,17 @@ using namespace std;
 #include "item.hh"
 #include "output-def.hh"
 #include "pitch.hh"
-#include "pqueue.hh"
 #include "rhythmic-head.hh"
 #include "score-engraver.hh"
 #include "spanner.hh"
 #include "staff-symbol-referencer.hh"
 #include "stream-event.hh"
 #include "tie.hh"
+#include "tie-column.hh"
 #include "warn.hh"
 
 #include "translator.icc"
 
-/*
-  TODO: make matching rest engraver.
-*/
-struct Pending_tie
-{
-  Moment when_;
-  Stream_event* tie_event_;
-  Pending_tie () : tie_event_ (0) {}
-};
-
-static int
-compare (Pending_tie const &a, Pending_tie const &b)
-{
-  return compare (a.when_, b.when_);
-}
-
-
 /*
   How does this work?
 
@@ -72,15 +55,14 @@ compare (Pending_tie const &a, Pending_tie const &b)
 
 class Completion_heads_engraver : public Engraver
 {
-  vector<Item*> notes_;
-  vector<Item*> prev_notes_;
+  vector<Item *> notes_;
+  vector<Item *> prev_notes_;
   // Must remember notes for explicit ties.
-  vector<Item*> tie_note_candidates_;
-  vector<Stream_event*> tie_note_candidate_events_;
-  vector<Grob*> ties_;
-  PQueue<Pending_tie> pending_ties_;
-  vector<Stream_event*> note_events_;
-  Stream_event *current_tie_event_;
+  vector<Item *> tie_note_candidates_;
+  vector<Stream_event *> tie_note_candidate_events_;
+  vector<Grob *> ties_;
+  vector<Stream_event *> note_events_;
+  Spanner *tie_column_;
   Moment note_end_mom_;
   bool is_first_;
   Rational left_to_do_;
@@ -88,7 +70,7 @@ class Completion_heads_engraver : public Engraver
   Rational factor_;
 
   Moment next_barline_moment ();
-  Item *make_note_head (Stream_event*);
+  Item *make_note_head (Stream_event *);
 
 public:
   TRANSLATOR_DECLARATIONS (Completion_heads_engraver);
@@ -100,14 +82,12 @@ protected:
   void process_music ();
   void stop_translation_timestep ();
   DECLARE_TRANSLATOR_LISTENER (note);
-  DECLARE_TRANSLATOR_LISTENER (tie);
 };
 
 void
 Completion_heads_engraver::initialize ()
 {
   is_first_ = false;
-  current_tie_event_ = 0;
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Completion_heads_engraver, note);
@@ -115,7 +95,7 @@ void
 Completion_heads_engraver::listen_note (Stream_event *ev)
 {
   note_events_.push_back (ev);
-  
+
   is_first_ = true;
   Moment now = now_mom ();
   Moment musiclen = get_event_length (ev, now);
@@ -124,16 +104,8 @@ Completion_heads_engraver::listen_note (Stream_event *ev)
   do_nothing_until_ = Rational (0, 0);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Completion_heads_engraver, tie);
-void
-Completion_heads_engraver::listen_tie (Stream_event *ev)
-{
-  is_first_ = true;
-  current_tie_event_ = ev;
-}
-
 /*
-  The duration _until_ the next barline.
+  The duration _until_ the next bar line.
 */
 Moment
 Completion_heads_engraver::next_barline_moment ()
@@ -148,7 +120,7 @@ Completion_heads_engraver::next_barline_moment ()
   return (*l - *e);
 }
 
-Item*
+Item *
 Completion_heads_engraver::make_note_head (Stream_event *ev)
 {
   Item *note = make_item ("NoteHead", ev->self_scm ());
@@ -170,14 +142,6 @@ Completion_heads_engraver::process_music ()
   if (!is_first_ && !left_to_do_)
     return;
 
-  if (current_tie_event_)
-    {
-      Pending_tie pending;
-      pending.when_ = note_end_mom_;
-      pending.tie_event_ = current_tie_event_;
-      pending_ties_.insert (pending);
-    }
-  
   is_first_ = false;
 
   Moment now = now_mom ();
@@ -229,35 +193,37 @@ Completion_heads_engraver::process_music ()
       event->set_property ("length", Moment (note_dur.get_length ()).smobbed_copy ());
       event->set_property ("duration-log", scm_from_int (note_dur.duration_log ()));
 
+      /*
+       The Completion_heads_engraver splits an event into a group of consecutive events.
+       For each event in the group, the property "autosplit-end" denotes whether the current event
+       was truncated during splitting. Based on "autosplit-end", the Tie_engraver decides whether a
+       tie event should be processed.
+      */
+      event->set_property ("autosplit-end",
+                          ly_bool2scm (left_to_do_ - note_dur.get_length () > Rational (0)));
+
       Item *note = make_note_head (event);
       if (need_clone)
        event->unprotect ();
       notes_.push_back (note);
     }
-  
-  if (pending_ties_.size ()
-      && pending_ties_.front().when_ == now_mom())
-    {
-      for (vsize i = 0; i < tie_note_candidate_events_.size(); i++)
-       for (vsize j = 0; j < note_events_.size(); j++)
-         {
-           Pitch *p =  unsmob_pitch (note_events_[j]->get_property ("pitch"));
-           Pitch *p_last
-             = unsmob_pitch (tie_note_candidate_events_[i]->get_property ("pitch"));
-           if (p && p_last && *p == *p_last)
-             make_tie (tie_note_candidates_[i], notes_[j]);
-         }
-    }
-      
+
   if (prev_notes_.size () == notes_.size ())
     {
       for (vsize i = 0; i < notes_.size (); i++)
        make_tie (prev_notes_[i], notes_[i]);
     }
 
+  if (ties_.size () && !tie_column_)
+    tie_column_ = make_spanner ("TieColumn", ties_[0]->self_scm ());
+
+  if (tie_column_)
+    for (vsize i = ties_.size (); i--;)
+      Tie_column::add_tie (tie_column_, ties_[i]);
+
   left_to_do_ -= note_dur.get_length ();
   if (left_to_do_)
-    get_global_context ()->add_moment_to_process (now.main_part_ + note_dur.get_length());
+    get_global_context ()->add_moment_to_process (now.main_part_ + note_dur.get_length ());
   /*
     don't do complicated arithmetic with grace notes.
   */
@@ -273,11 +239,12 @@ Completion_heads_engraver::make_tie (Grob *left, Grob *right)
   Tie::set_head (p, RIGHT, right);
   ties_.push_back (p);
 }
-                                    
+
 void
 Completion_heads_engraver::stop_translation_timestep ()
 {
   ties_.clear ();
+  tie_column_ = 0;
 
   if (notes_.size ())
     prev_notes_ = notes_;
@@ -288,11 +255,6 @@ void
 Completion_heads_engraver::start_translation_timestep ()
 {
   Moment now = now_mom ();
-  while (pending_ties_.size() && pending_ties_.front().when_ < now)
-    {
-      pending_ties_.delmin();
-    }
-  current_tie_event_ = 0;
   if (note_end_mom_.main_part_ <= now.main_part_)
     {
       tie_note_candidate_events_ = note_events_;
@@ -307,23 +269,26 @@ Completion_heads_engraver::start_translation_timestep ()
 
 Completion_heads_engraver::Completion_heads_engraver ()
 {
+  tie_column_ = 0;
 }
 
 ADD_TRANSLATOR (Completion_heads_engraver,
                /* doc */
                "This engraver replaces @code{Note_heads_engraver}.  It plays"
                " some trickery to break long notes and automatically tie them"
-               " into the next measure."
-               ,
+               " into the next measure.",
+
                /* create */
                "NoteHead "
                "Tie "
-               ,
+               "TieColumn ",
+
                /* read */
-               "middleCPosition "
-               "measurePosition "
                "measureLength "
-               ,
+               "measurePosition "
+               "middleCPosition "
+               "timing ",
+
                /* write */
                "completionBusy "
                );
index f6f84b80907714907d218525deb8c868a95f397e..233011587f5f2bb0e56cc599e00a66544b51b65e 100644 (file)
@@ -126,7 +126,6 @@ Constrained_breaking::space_line (vsize i, vsize j)
 {
   bool ragged_right = to_boolean (pscore_->layout ()->c_variable ("ragged-right"));
   bool ragged_last = to_boolean (pscore_->layout ()->c_variable ("ragged-last"));
-  Column_x_positions col;
 
   vector<Grob*> line (all_.begin () + breaks_[i],
                      all_.begin () + breaks_[j] + 1);
@@ -553,9 +552,10 @@ Line_details::Line_details (Prob *pb, Output_def *paper)
   Page_layout_problem::read_spacing_spec (title_spec, &title_min_distance_, ly_symbol2scm ("minimum-distance"));
 
   SCM footnotes = pb->get_property ("footnotes");
+
   if (scm_is_pair (footnotes))
     for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s))
-      footnotes_.push_back (unsmob_stencil (scm_car (s)));
+      footnotes_.push_back (unsmob_stencil (scm_cadar (s)));
 
   last_column_ = 0;
   force_ = 0;
index f62c45f0dc6d3adec09cccf6e700fa1722806a24..766b63ed545591bd1087295aa7044ff9d58ea147 100644 (file)
@@ -34,7 +34,6 @@
 class Dynamic_align_engraver : public Engraver
 {
   TRANSLATOR_DECLARATIONS (Dynamic_align_engraver);
-  DECLARE_TRANSLATOR_LISTENER (break_span);
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_ACKNOWLEDGER (dynamic);
   DECLARE_ACKNOWLEDGER (footnote_spanner);
@@ -45,21 +44,23 @@ protected:
 
 private:
   void create_line_spanner (Stream_event *cause);
+  void set_spanner_bounds (Spanner *line, bool end);
   Spanner *line_;
+  Spanner *ended_line_; // Spanner manually broken, don't use it for new grobs
+  Spanner *current_dynamic_spanner_;
   vector<Spanner *> ended_;
   vector<Spanner *> started_;
   vector<Grob *> scripts_;
   vector<Grob *> support_;
 
   set<Spanner *> running_;
-
-  bool early_end_;
 };
 
 Dynamic_align_engraver::Dynamic_align_engraver ()
 {
   line_ = 0;
-  early_end_ = false;
+  ended_line_ = 0;
+  current_dynamic_spanner_ = 0;
 }
 
 ADD_ACKNOWLEDGER (Dynamic_align_engraver, dynamic);
@@ -80,6 +81,20 @@ Dynamic_align_engraver::acknowledge_end_dynamic (Grob_info info)
 {
   if (Spanner::has_interface (info.grob ()))
     ended_.push_back (info.spanner ());
+
+  /* If the break flag is set, store the current spanner and let new dynamics
+   * create a new spanner 
+   */
+  bool spanner_broken = current_dynamic_spanner_ == info.spanner () &&
+                        to_boolean (current_dynamic_spanner_->get_property ("spanner-broken"));
+  if (spanner_broken && line_)
+    {
+      if (ended_line_)
+        programming_error ("already have a force-ended DynamicLineSpanner.");
+      ended_line_ = line_;
+      line_ = 0;
+      current_dynamic_spanner_ = 0;
+    }
 }
 
 void
@@ -97,30 +112,32 @@ Dynamic_align_engraver::acknowledge_note_column (Grob_info info)
   support_.push_back (info.grob ());
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_align_engraver, break_span);
-void
-Dynamic_align_engraver::listen_break_span (Stream_event *event)
-{
-  if (event->in_event_class ("break-dynamic-span-event"))
-    early_end_ = true;
-}
-
 void
 Dynamic_align_engraver::acknowledge_dynamic (Grob_info info)
 {
   Stream_event *cause = info.event_cause ();
+  // Check whether an existing line spanner has the same direction
+  if (line_ && cause)
+    {
+      Direction line_dir = get_grob_direction (line_);
+      Direction grob_dir = to_dir (cause->get_property ("direction"));
+
+      // If we have an explicit direction for the new dynamic grob
+      // that differs from the current line spanner, break the spanner
+      if (grob_dir && (line_dir != grob_dir))
+        {
+          if (!ended_line_)
+            ended_line_ = line_;
+          line_ = 0;
+          current_dynamic_spanner_ = 0;
+        }
+    }
+
   create_line_spanner (cause);
   if (Spanner::has_interface (info.grob ()))
     {
       started_.push_back (info.spanner ());
-      /*
-       If we are using text spans instead of hairpins and the line
-       is hidden, end the alignment spanner early: this allows dynamics
-       to be spaced individually instead of being linked together.
-      */
-      if (info.grob ()->internal_has_interface (ly_symbol2scm ("dynamic-text-spanner-interface"))
-         && (info.grob ()->get_property ("style") == ly_symbol2scm ("none")))
-       early_end_ = true;
+      current_dynamic_spanner_ = info.spanner ();
     }
   else if (info.item ())
     scripts_.push_back (info.item ());
@@ -137,29 +154,15 @@ Dynamic_align_engraver::acknowledge_dynamic (Grob_info info)
 }
 
 void
-Dynamic_align_engraver::stop_translation_timestep ()
+Dynamic_align_engraver::set_spanner_bounds (Spanner *line, bool end)
 {
-  for (vsize i = 0; i < started_.size (); i++)
-    running_.insert (started_[i]);
-  for (vsize i = 0; i < ended_.size (); i++)
-    {
-      Spanner *sp = ended_[i];
-
-      set<Spanner *>::iterator it = running_.find (sp);
-      if (it != running_.end ())
-       running_.erase (it);
-      else
-       started_[i]->programming_error ("lost track of this dynamic spanner");
-    }
-
-  bool end = line_ && (running_.empty ()
-                      || early_end_);
+  if (!line)
+    return;
   Direction d = LEFT;
   do
     {
-      if (line_
-         && ((d == LEFT && !line_->get_bound (LEFT))
-             || (end && d == RIGHT && !line_->get_bound (RIGHT))))
+      if ((d == LEFT && !line->get_bound (LEFT)) ||
+         (end && d == RIGHT && !line->get_bound (RIGHT)))
        {
          vector<Spanner *> const &spanners
            = (d == LEFT) ? started_ : ended_;
@@ -172,24 +175,51 @@ Dynamic_align_engraver::stop_translation_timestep ()
          else
            {
              bound = unsmob_grob (get_property ("currentMusicalColumn"));
-             if (!early_end_)
-               programming_error ("started DynamicLineSpanner but have no left bound");
+             programming_error ("started DynamicLineSpanner but have no left bound");
            }
 
-         line_->set_bound (d, bound);
+         line->set_bound (d, bound);
        }
     }
   while (flip (&d) != LEFT);
+}
+
+void
+Dynamic_align_engraver::stop_translation_timestep ()
+{
+  for (vsize i = 0; i < started_.size (); i++)
+    running_.insert (started_[i]);
+  for (vsize i = 0; i < ended_.size (); i++)
+    {
+      Spanner *sp = ended_[i];
+
+      set<Spanner *>::iterator it = running_.find (sp);
+      if (it != running_.end ())
+       running_.erase (it);
+      else
+       started_[i]->programming_error ("lost track of this dynamic spanner");
+    }
 
-  for (vsize i = 0; line_ && i < support_.size (); i++)
+  bool end = line_ && running_.empty ();
+
+  // Set the proper bounds for the current spanner and for a spanner that
+  // is ended now
+  set_spanner_bounds (ended_line_, true);
+  set_spanner_bounds (line_, end);
+  // If the flag is set to break the spanner after the current child, don't 
+  // add any more support points (needed e.g. for style=none, where the
+  // invisible spanner should NOT be shifted since we don't have a line).
+  bool spanner_broken = current_dynamic_spanner_ &&
+                        to_boolean (current_dynamic_spanner_->get_property ("spanner-broken"));
+  for (vsize i = 0; line_ && !spanner_broken && i < support_.size (); i++)
     Side_position_interface::add_support (line_, support_[i]);
 
   if (end)
     {
       line_ = 0;
-      early_end_ = false;
     }
 
+  ended_line_ = 0;
   ended_.clear ();
   started_.clear ();
   scripts_.clear ();
index 9554883464f4d5c5d74d47cac737a286e42e41c4..f10ee2106fe762f73569e03794d1ba26358b8d8d 100644 (file)
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "warn.hh"             // error ()
+#include "font-interface.hh"
+#include "grob-array.hh"
 #include "item.hh"
 #include "output-def.hh"
-#include "system.hh"
-#include "font-interface.hh"
 #include "paper-score.hh"
-#include "grob-array.hh"
+#include "simple-closure.hh"
+#include "system.hh"
+#include "warn.hh"             // error ()
 
 LY_DEFINE (ly_grob_property_data, "ly:grob-property-data",
           2, 0, 0, (SCM grob, SCM sym),
@@ -49,6 +50,7 @@ LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!",
   LY_ASSERT_TYPE (ly_is_symbol, sym, 2);
 
   if (!ly_is_procedure (val)
+      && !is_simple_closure (val)
       && !type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")))
     error ("typecheck failed");
 
index 2f67825a06ab2fa3438bca225d9ee57ebbff2340..9d5c00503dca8ce6758e623076678a957bee8606 100644 (file)
 
 #include "engraver.hh"
 #include "international.hh"
+#include "item.hh"
 #include "note-column.hh"
 #include "pointer-group-interface.hh"
 #include "side-position-interface.hh"
-#include "stream-event.hh"
 #include "spanner.hh"
-#include "item.hh"
+#include "stream-event.hh"
 
 #include "translator.icc"
 
@@ -32,8 +32,8 @@ class Horizontal_bracket_engraver : public Engraver
 {
 public:
   TRANSLATOR_DECLARATIONS (Horizontal_bracket_engraver);
-  vector<Spanner*> bracket_stack_;
-  vector<Stream_event*> events_;
+  vector<Spanner *> bracket_stack_;
+  vector<Stream_event *> events_;
   vsize pop_count_;
   vsize push_count_;
 
@@ -43,22 +43,6 @@ public:
   DECLARE_TRANSLATOR_LISTENER (note_grouping);
 };
 
-ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column);
-ADD_TRANSLATOR (Horizontal_bracket_engraver,
-               /* doc */
-               "Create horizontal brackets over notes for musical analysis"
-               " purposes.",
-
-               /* create */
-               "HorizontalBracket ",
-
-               /* read */
-               "",
-
-               /* write */
-               ""
-               );
-
 Horizontal_bracket_engraver::Horizontal_bracket_engraver ()
 {
   pop_count_ = 0;
@@ -117,10 +101,26 @@ Horizontal_bracket_engraver::process_music ()
 void
 Horizontal_bracket_engraver::stop_translation_timestep ()
 {
-  for (int i = pop_count_; i--;)
+  for (vsize i = pop_count_; i--;)
     if (bracket_stack_.size ())
       bracket_stack_.pop_back ();
   pop_count_ = 0;
   push_count_ = 0;
+  events_.clear ();
 }
 
+ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column);
+ADD_TRANSLATOR (Horizontal_bracket_engraver,
+               /* doc */
+               "Create horizontal brackets over notes for musical analysis"
+               " purposes.",
+
+               /* create */
+               "HorizontalBracket ",
+
+               /* read */
+               "",
+
+               /* write */
+               ""
+               );
index fa662020967bfbe57f6234c2ef9cded251b94225..1537f1d35861f89d79318289612b9f814e57bee6 100644 (file)
@@ -53,6 +53,7 @@ struct Axis_group_interface
   static Interval rest_of_line_pure_height (Grob *me, int, int);
   static Interval part_of_line_pure_height (Grob *me, bool begin, int, int);
 
+  static bool has_outside_staff_parent (Grob *me);
   static Skyline_pair skyline_spacing (Grob *me, vector<Grob*> elements);
   static void add_element (Grob *me, Grob *);
   static void set_axes (Grob *, Axis, Axis);
index 003b9e8efaa00aa1ca267b8ee403638355122cde..69ac4872b5f5902f6d1f2f3cbb80e7a54b2ac911 100644 (file)
@@ -56,5 +56,7 @@ private:
 INSTANTIATE_COMPARE (Duration, Duration::compare);
 DECLARE_UNSMOB (Duration, duration);
 
+extern SCM Duration_type_p_proc;
+
 #endif // DURATION_HH
 
index 0308ab3e5fe89ea92b2be75bb956b03b78b5579e..4a2da856c214c1423085320183bae19ce97bf07a 100644 (file)
@@ -31,7 +31,7 @@ protected:
   virtual void finalize ();
 
   DECLARE_ACKNOWLEDGER (rest);
-  DECLARE_ACKNOWLEDGER (note_head);
+  DECLARE_ACKNOWLEDGER (ligature_head);
   virtual void listen_ligature (Stream_event *ev);
   void process_music ();
   virtual Spanner *create_ligature_spanner () = 0;
index 17f64d754b87089b324263e4ea8d1b875ba75286..acf6bac51ce43e9d9a11263994c2deabb8eebd03 100644 (file)
@@ -126,6 +126,7 @@ public:
   vsize system_count () const;
   Real footnote_separator_stencil_height () const;
   Real footnote_padding () const;
+  Real footnote_number_raise () const;
   Real footnote_footer_padding () const;
   Real line_count_penalty (int line_count) const;
   int line_count_status (int line_count) const;
@@ -190,6 +191,7 @@ private:
   vsize system_count_;
   Real footnote_separator_stencil_height_;
   Real footnote_padding_;
+  Real footnote_number_raise_;
   Real footnote_footer_padding_;
   int orphan_penalty_;
 
@@ -229,7 +231,7 @@ private:
   void create_system_list ();
   void find_chunks_and_breaks (Break_predicate, Prob_break_predicate);
   SCM make_page (int page_num, bool last) const;
-  SCM get_page_configuration (SCM systems, int page_num, bool ragged, bool last);
-  SCM draw_page (SCM systems, SCM config, int page_num, bool last);
+  SCM get_page_configuration (SCM systems, int page_num, int footnote_count, bool ragged, bool last);
+  SCM draw_page (SCM systems, SCM config, int page_num, int footnote_num, bool last);
 };
 #endif /* PAGE_BREAKING_HH */
index ff6fcece22c154be7ae5e9d66c747dc2bf5a06c1..629528bb53db51c0f4ea5acee8646b59abda545a 100644 (file)
@@ -26,7 +26,7 @@
 class Page_layout_problem
 {
 public:
-  Page_layout_problem (Paper_book*, SCM page, SCM systems);
+  Page_layout_problem (Paper_book*, SCM page, SCM systems, int footnote_count);
 
   SCM solution (bool ragged);
   void set_header_height (Real);
@@ -34,7 +34,8 @@ public:
   static bool read_spacing_spec (SCM spec, Real* dest, SCM sym);
   static bool is_spaceable (Grob *g);
   static SCM get_details (Grob *g);
-  static SCM get_footnotes_from_lines (SCM lines, Real padding);
+  static vsize get_footnote_count (SCM lines);
+  static SCM get_footnotes_from_lines (SCM lines, int counter, Paper_book *pb);
   static Stencil* get_footnote_separator_stencil (Output_def *paper);
   static SCM get_spacing_spec (Grob *before, Grob *after, bool pure, int start, int end);
   static Real get_fixed_spacing (Grob *before, Grob *after, int spaceable_index, bool pure, int start, int end);
index 1ef59f3e94d8eb671f9fcc924e26f91072f53482..df829b2a0d3f8860259e1ae41ea4ef35d3d2bbe7 100644 (file)
@@ -106,5 +106,6 @@ INSTANTIATE_COMPARE (Pitch, Pitch::compare);
 
 extern SCM pitch_less_proc;
 Pitch pitch_interval (Pitch const &from, Pitch const &to);
+extern SCM Pitch_type_p_proc;
 
 #endif /* PITCH_HH */
index 8aa0cec11d23a64a3315dd60f1b13415a2f14193..c53a4d9648162c1a2aa07c78fbb9f8760b0ca1c0 100644 (file)
@@ -29,7 +29,7 @@ class Property_iterator : public Simple_music_iterator
 {
 public:
   DECLARE_SCHEME_CALLBACK (constructor, ());
-  DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM));
+  DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM, SCM));
   DECLARE_CLASSNAME(Property_iterator);
 
 protected:
index f3f5931adc4ce4e8d57a328a78a27503de911a77..adc2c0c0b4607913ea7c546c22e4ee4bb03f7d93 100644 (file)
@@ -31,9 +31,9 @@ public:
   DECLARE_SCHEME_CALLBACK (calc_slope, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_width, (SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (height, (SCM));
   DECLARE_SCHEME_CALLBACK (width, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_style, (SCM));
+  DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM));
   static Stencil raw_stencil (Grob *, Real slope, Direction stemdir);
   static Stencil translated_stencil (Grob*, Real slope);
   static Stencil untranslated_stencil (Grob*, Real slope);
index 27fe988b615bb33436ee152317bf027a82ab59ec..3388e34b590b8d92601e990fa4dd21ecc765545a 100644 (file)
@@ -61,6 +61,7 @@ public:
   DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_beaming, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_length, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_stem_begin_position, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_end_position, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_info, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM));
index 940f6a5fb876e1b2ca76cc58280f714b570f9757..4b56238f367c49f563469bd93b6454a9fdd8c091 100644 (file)
@@ -48,7 +48,8 @@ public:
   int get_rank () const;
   vector<Stencil *> get_footnotes_in_range (vsize st, vsize end);
   void get_footnote_grobs_in_range (vector<Grob *> &out, vsize st, vsize end);
-  Stencil make_footnote_stencil (Real padding);
+  vector<Grob *> *footnote_grobs ();
+  vsize num_footnotes ();
   void do_break_substitution_and_fixup_refpoints ();
   void post_processing ();
   void populate_footnote_grob_vector ();
index db223e66061c8fc3dcf75e2bf0d8414cbe21ac78..2264e27876a4e5473cda92b2328ac0ebaedccb55 100644 (file)
@@ -72,8 +72,12 @@ Key_engraver::create_key (bool is_default)
       item_ = make_item ("KeySignature",
                         key_event_ ? key_event_->self_scm () : SCM_EOL);
 
+      /* Use middleCClefPosition rather than middleCPosition, because cue
+       * notes with a different clef will modify middleCPosition. The 
+       * Key signature, however, should still be printed at the original
+       * position. */
       item_->set_property ("c0-position",
-                          get_property ("middleCPosition"));
+                          get_property ("middleCClefPosition"));
 
       SCM last = get_property ("lastKeySignature");
       SCM key = get_property ("keySignature");
@@ -230,7 +234,8 @@ ADD_TRANSLATOR (Key_engraver,
                "keyAlterationOrder "
                "keySignature "
                "lastKeySignature "
-               "printKeyCancellation ",
+               "printKeyCancellation "
+               "middleCClefPosition ",
                
                /* write */
                "keySignature "
index 882418242d9d4ce8577ee81069a22d8ef75f5675..83a7940b6938dc634083fe9936ee389635713412 100644 (file)
@@ -46,6 +46,7 @@
 using namespace std;
 
 #include "context-def.hh"
+#include "duration.hh"
 #include "identifier-smob.hh"
 #include "international.hh"
 #include "interval.hh"
@@ -58,6 +59,7 @@ using namespace std;
 #include "music-function.hh"
 #include "parse-scm.hh"
 #include "parser.hh"
+#include "pitch.hh"
 #include "source-file.hh"
 #include "std-string.hh"
 #include "string-convert.hh"
@@ -794,11 +796,17 @@ Lily_lexer::scan_escaped_word (string str)
                push_extra_token (EXPECT_NO_MORE_ARGS);
                for (; scm_is_pair (s); s = scm_cdr (s))
                {
-                       if (scm_car (s) == ly_music_p_proc)
+                       SCM cs = scm_car (s);
+                       
+                       if (cs == ly_music_p_proc)
                                push_extra_token (EXPECT_MUSIC);
-                       else if (scm_car (s) == ly_lily_module_constant ("markup?"))
+                       else if (cs == Pitch_type_p_proc)
+                               push_extra_token (EXPECT_PITCH);
+                       else if (cs == Duration_type_p_proc)
+                               push_extra_token (EXPECT_DURATION);
+                       else if (cs == ly_lily_module_constant ("markup?"))
                                push_extra_token (EXPECT_MARKUP);
-                       else if (ly_is_procedure (scm_car (s)))
+                       else if (ly_is_procedure (cs))
                                push_extra_token (EXPECT_SCM);
                        else programming_error ("Function parameter without type-checking predicate");
                }
index be4917f0c735ec5da9078c875af32a0317ce35ea..99e86ed20b193a1da92e40532ebac1a85f340d2a 100644 (file)
@@ -143,7 +143,7 @@ Ligature_engraver::process_music ()
 
       ligature_start_mom_ = now_mom ();
 
-      // TODO: dump cause into make_item/spanner. 
+      // TODO: dump cause into make_item/spanner.
       // announce_grob (ligature_, events_drul_[START]->self_scm ());
     }
 }
@@ -194,15 +194,13 @@ Ligature_engraver::current_ligature ()
 }
 
 void
-Ligature_engraver::acknowledge_note_head (Grob_info info)
+Ligature_engraver::acknowledge_ligature_head (Grob_info info)
 {
   if (ligature_)
     {
       primitives_.push_back (info);
       if (info.grob () && brew_ligature_primitive_proc != SCM_EOL)
-       {
-         info.grob ()->set_property ("stencil", brew_ligature_primitive_proc);
-       }
+        info.grob ()->set_property ("stencil", brew_ligature_primitive_proc);
     }
 }
 
index 0235243628b0dc1a74a9cab08c1d462b14a3bb42..d55c01ff45b8e391bcb45ffa91970a164d8d35a2 100644 (file)
@@ -125,48 +125,59 @@ Line_spanner::calc_bound_info (SCM smob, Direction dir)
       Grob *common_y = me->common_refpoint (me->get_bound (dir), Y_AXIS);
       if (me->get_bound (dir)->break_status_dir ())
        {
-         Spanner *next_sp = me->broken_neighbor (dir);
-         Item *next_bound = next_sp->get_bound (dir);
-
-         if (next_bound->break_status_dir ())
+         if (to_boolean (me->get_property ("simple-Y")))
            {
-             programming_error ("no note heads for the line spanner on neighbor line?"
-                                " Confused.");
-             me->suicide ();
-             return SCM_EOL;
+             Spanner *orig = dynamic_cast<Spanner *>(me->original ());
+             Spanner *extreme = dir == LEFT ? orig->broken_intos_.front () : orig->broken_intos_.back ();
+             Grob *e_bound = extreme->get_bound (dir);
+              Grob *e_common_y = extreme->common_refpoint (e_bound, Y_AXIS);
+              y = e_bound->extent (e_common_y, Y_AXIS).center ();
            }
+          else
+            {
+             Spanner *next_sp = me->broken_neighbor (dir);
+             Item *next_bound = next_sp->get_bound (dir);
+
+             if (next_bound->break_status_dir ())
+               {
+                 programming_error ("no note heads for the line spanner on neighbor line?"
+                                    " Confused.");
+                 me->suicide ();
+                 return SCM_EOL;
+               }
+
+             Spanner *next_bound_parent = parent_spanner (next_bound);
+             Interval next_ext = next_bound->extent (next_bound_parent, Y_AXIS);
 
-         Spanner *next_bound_parent = parent_spanner (next_bound);
-         Interval next_ext = next_bound->extent (next_bound_parent, Y_AXIS);
-
-         /*
-           We want to know what would be the y-position of the next
-           bound (relative to my y-parent) if it belonged to the
-           same system as this bound.  We rely on the fact that the
-           y-parent of the next bound is a spanner (probably the
-           VerticalAxisGroup of a staff) that extends over the break.
-         */
-         Spanner *next_bound_parent_on_this_line =
-           next_bound_parent->broken_neighbor (other_dir (dir));
-
-         if (next_bound_parent_on_this_line)
-           {
-             Grob *common = me->common_refpoint (next_bound_parent_on_this_line, Y_AXIS);
-             Real bound_offset = next_bound_parent_on_this_line->relative_coordinate (common, Y_AXIS);
-             y = next_ext.center () + bound_offset - me->relative_coordinate (common, Y_AXIS);
-           }
-         else
-           {
              /*
-               We fall back to assuming that the distance between
-               staves doesn't change over line breaks.
+               We want to know what would be the y-position of the next
+               bound (relative to my y-parent) if it belonged to the
+               same system as this bound.  We rely on the fact that the
+               y-parent of the next bound is a spanner (probably the
+               VerticalAxisGroup of a staff) that extends over the break.
              */
-             programming_error ("next-bound's parent doesn't extend to this line");
-             Grob *next_system = next_bound->get_system ();
-             Grob *this_system = me->get_system ();
-             y = next_ext.center () + next_bound_parent->relative_coordinate (next_system, Y_AXIS)
-               - me->relative_coordinate (this_system, Y_AXIS);
-           }
+             Spanner *next_bound_parent_on_this_line =
+               next_bound_parent->broken_neighbor (other_dir (dir));
+
+             if (next_bound_parent_on_this_line)
+               {
+                 Grob *common = me->common_refpoint (next_bound_parent_on_this_line, Y_AXIS);
+                 Real bound_offset = next_bound_parent_on_this_line->relative_coordinate (common, Y_AXIS);
+                 y = next_ext.center () + bound_offset - me->relative_coordinate (common, Y_AXIS);
+               }
+             else
+               {
+                 /*
+                   We fall back to assuming that the distance between
+                   staves doesn't change over line breaks.
+                 */
+                 programming_error ("next-bound's parent doesn't extend to this line");
+                 Grob *next_system = next_bound->get_system ();
+                 Grob *this_system = me->get_system ();
+                 y = next_ext.center () + next_bound_parent->relative_coordinate (next_system, Y_AXIS)
+                     - me->relative_coordinate (this_system, Y_AXIS);
+               }
+            }
        }
       else
        {
@@ -224,6 +235,9 @@ Line_spanner::print (SCM smob)
 {
   Spanner *me = dynamic_cast<Spanner *> (unsmob_grob (smob));
 
+  // Triggers simple-Y calculations
+  bool simple_y = to_boolean (me->get_property ("simple-Y")) && !to_boolean (me->get_property ("cross-staff"));
+
   Drul_array<SCM> bounds (me->get_property ("left-bound-info"),
                          me->get_property ("right-bound-info"));
 
@@ -246,7 +260,6 @@ Line_spanner::print (SCM smob)
 
   Drul_array<Real> gaps (0, 0);
   Drul_array<bool> arrows (0, 0);
-  Drul_array<Real> anchor_align (0, 0);
   Drul_array<Stencil *> stencils (0,0);
   Drul_array<Grob *> common_y (0, 0);
 
@@ -260,8 +273,6 @@ Line_spanner::print (SCM smob)
                                                 bounds[d], SCM_BOOL_F), 0.0);
       arrows[d] = to_boolean (ly_assoc_get (ly_symbol2scm ("arrow"),
                                            bounds[d], SCM_BOOL_F));
-      anchor_align[d] = robust_scm2double (ly_assoc_get (ly_symbol2scm ("anchor-alignment"),
-                                                        bounds[d], SCM_BOOL_F), LEFT);
       stencils[d] = unsmob_stencil (ly_assoc_get (ly_symbol2scm ("stencil"),
                                                  bounds[d], SCM_BOOL_F));
       common_y[d] = unsmob_grob (ly_assoc_get (ly_symbol2scm ("common-Y"),
@@ -272,9 +283,13 @@ Line_spanner::print (SCM smob)
   while (flip (&d) != LEFT);
 
   Grob *my_common_y = common_y[LEFT]->common_refpoint (common_y[RIGHT], Y_AXIS);
-  do
-    span_points[d][Y_AXIS] += common_y[d]->relative_coordinate (my_common_y, Y_AXIS);
-  while (flip (&d) != LEFT);
+
+  if (!simple_y)
+    {
+      do
+        span_points[d][Y_AXIS] += common_y[d]->relative_coordinate (my_common_y, Y_AXIS);
+      while (flip (&d) != LEFT);
+    }
 
   Interval normalized_endpoints = robust_scm2interval (me->get_property ("normalized-endpoints"), Interval (0, 1));
   Real y_length = span_points[RIGHT][Y_AXIS] - span_points[LEFT][Y_AXIS];
@@ -296,10 +311,6 @@ Line_spanner::print (SCM smob)
 
       if (stencils[d])
        {
-         Interval ext = stencils[d]->extent (X_AXIS);
-         Real anchor = ext.linear_combination (anchor_align[d]) - ext[LEFT];
-         span_points[d][X_AXIS] -= anchor;
-
          Stencil s = stencils[d]->translated (span_points[d]);
          SCM align = ly_assoc_get (ly_symbol2scm ("stencil-align-dir-y"),
                                    bounds[d], SCM_BOOL_F);
@@ -341,7 +352,7 @@ Line_spanner::print (SCM smob)
     }
 
   line.translate (Offset (-me->relative_coordinate (commonx, X_AXIS),
-                         -me->relative_coordinate (my_common_y, Y_AXIS)));
+                         simple_y ? 0.0 : -me->relative_coordinate (my_common_y, Y_AXIS)));
 
 
   return line.smobbed_copy ();
@@ -358,6 +369,7 @@ ADD_INTERFACE (Line_spanner,
               "left-bound-info "
               "note-columns "
               "right-bound-info "
+              "simple-Y "
               "thickness "
               "to-barline "
               );
index 7487e2f91b2b1ccb5a88591846119fdec6041aef..0168da15003a47a245cd425c48659fc63e2eb72e 100644 (file)
@@ -63,6 +63,7 @@ private:
   DECLARE_LISTENER (check_new_context);
 
   bool music_found_;
+  bool lyrics_found_;
   Context *lyrics_context_;
   Context *music_context_;
   SCM lyricsto_voice_name_;
@@ -76,6 +77,7 @@ private:
 Lyric_combine_music_iterator::Lyric_combine_music_iterator ()
 {
   music_found_ = false;
+  lyrics_found_ = false;
   pending_grace_moment_.set_infinite (1);
   lyric_iter_ = 0;
   music_context_ = 0;
@@ -225,13 +227,9 @@ Lyric_combine_music_iterator::check_new_context (SCM sev)
   if (!ok ())
     return ;
   
-  // TODO: Check first if type=Voice and if id matches
-  Stream_event * ev = unsmob_stream_event (sev);
-  if (ev->get_property ("type") != ly_symbol2scm ("Voice"))
-    return ;
-  
+  // Search for a possible candidate voice to attach the lyrics to. If none
+  // is found, we'll try next time again.
   Context *voice = find_voice ();
-
   if (voice)
     {
       set_music_context (voice);
@@ -278,6 +276,7 @@ Lyric_combine_music_iterator::process (Moment /* when */)
   if (new_voice)
     set_music_context (new_voice);
 
+  lyrics_found_ = true;
   if (!music_context_)
     return;
 
@@ -332,10 +331,12 @@ Lyric_combine_music_iterator::do_quit ()
 
       string name;
       if (scm_is_string (voice_name))
-       name = ly_scm2string (voice_name);
-
-      get_music ()->origin ()->warning (_f ("cannot find Voice `%s'",
-                                           name.c_str ()) + "\n");
+        name = ly_scm2string (voice_name);
+      /* Don't print a warning for empty lyrics (in which case we don't try
+         to find the proper voice, so it will not be found) */
+      if (lyrics_found_)
+        get_music ()->origin ()->warning (_f ("cannot find Voice `%s'",
+                                              name.c_str ()) + "\n");
     }
 
   if (lyric_iter_)
index d6e8eed3ca3ffc700ba27a4d80905732496dff8a..ead5f1f0ad7d8242f89e69672a3216530930a8bc 100644 (file)
@@ -59,7 +59,7 @@ protected:
   virtual Spanner *create_ligature_spanner ();
   virtual void build_ligature (Spanner *ligature, vector<Grob_info> primitives);
   DECLARE_TRANSLATOR_LISTENER (ligature);
-  
+
 public:
   TRANSLATOR_DECLARATIONS (Mensural_ligature_engraver);
 
@@ -78,7 +78,7 @@ Mensural_ligature_engraver::listen_ligature (Stream_event *ev)
 
 Mensural_ligature_engraver::Mensural_ligature_engraver ()
 {
-  brew_ligature_primitive_proc = 
+  brew_ligature_primitive_proc =
     Mensural_ligature::brew_ligature_primitive_proc;
 }
 
@@ -473,7 +473,7 @@ Mensural_ligature_engraver::build_ligature (Spanner *ligature,
 }
 
 ADD_ACKNOWLEDGER (Mensural_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Mensural_ligature_engraver, note_head);
+ADD_ACKNOWLEDGER (Mensural_ligature_engraver, ligature_head);
 
 ADD_TRANSLATOR (Mensural_ligature_engraver,
                /* doc */
index 09673b7e14a95c9bb5ca8ee42b02c15aeb2bcb71..09606c261e655185bee87ee4d76ab277d4cd02c1 100644 (file)
@@ -93,6 +93,8 @@ Metronome_mark_engraver::acknowledge_break_aligned (Grob_info info)
       support_ = g;
       text_->set_parent (g, X_AXIS);
     }
+  if (bar_ || support_)
+    text_->set_property ("non-musical", SCM_BOOL_T);
 }
 
 void
index 1fcb259ae13c2c0b6b0ee94967476cd8099f3928..aa96849f26c81d4ffe8674fde7c1e7cc4d129e68 100644 (file)
 #include "string-convert.hh"
 #include "warn.hh"
 
-#define PITCH_WHEEL_TOP 0x3FFF
 #define PITCH_WHEEL_CENTER 0x2000
-#define PITCH_WHEEL_BOTTOM 0x0000
-#define PITCH_WHEEL_RANGE (PITCH_WHEEL_TOP - PITCH_WHEEL_BOTTOM)
+#define PITCH_WHEEL_SEMITONE 0X1000
 
 Midi_item *
 Midi_item::get_midi (Audio_item *a)
@@ -193,15 +191,16 @@ Midi_note::get_fine_tuning () const
                   + audio_->transposing_.tone_pitch ()) * Rational (2);
   tune -= Rational (get_semitone_pitch ());
 
-  tune *= 100;
+  tune *= PITCH_WHEEL_SEMITONE;
   return (int) double (tune);
 }
 
 int
 Midi_note::get_semitone_pitch () const
 {
-  return int (double ((audio_->pitch_.tone_pitch ()
-                      + audio_->transposing_.tone_pitch ()) * Rational (2)));
+  double tune = double ((audio_->pitch_.tone_pitch ()
+                        + audio_->transposing_.tone_pitch ()) * Rational (2));
+  return int (rint (tune));
 }
 
 string
@@ -214,10 +213,7 @@ Midi_note::to_string () const
   // print warning if fine tuning was needed, HJJ
   if (get_fine_tuning () != 0)
     {
-      finetune = PITCH_WHEEL_CENTER;
-      // Move pitch wheel to a shifted position.
-      // The pitch wheel range (of 4 semitones) is multiplied by the cents.
-      finetune += (PITCH_WHEEL_RANGE *get_fine_tuning ()) / (4 * 100);
+      finetune = PITCH_WHEEL_CENTER + get_fine_tuning ();
 
       str += ::to_string ((char) (0xE0 + channel_));
       str += ::to_string ((char) (finetune & 0x7F));
index 3fbcdb612b86b8d14f01a90ea9b18507c42d1be0..786ab143c14957c8896542f9cd898e44e2bd6327 100644 (file)
@@ -228,11 +228,6 @@ Multi_measure_rest_engraver::start_translation_timestep ()
       */
       last_rest_->set_property ("measure-count", scm_from_int (num));
 
-      SCM sml = get_property ("measureLength");
-      Rational ml = (unsmob_moment (sml)) ? unsmob_moment (sml)->main_part_ : Rational (1);
-      if (ml >= Rational (2))
-       last_rest_->set_property ("use-breve-rest", SCM_BOOL_T);
-
       mmrest_ = 0;
       numbers_.clear ();
 
@@ -268,9 +263,7 @@ ADD_TRANSLATOR (Multi_measure_rest_engraver,
                "Engrave multi-measure rests that are produced with"
                " @samp{R}.  It reads @code{measurePosition} and"
                " @code{internalBarNumber} to determine what number to print"
-               " over the @ref{MultiMeasureRest}.  Reads @code{measureLength}"
-               " to determine whether it should use a whole rest or a breve"
-               " rest to represent one measure.",
+               " over the @ref{MultiMeasureRest}.",
                
                /* create */
                "MultiMeasureRest "
@@ -281,8 +274,7 @@ ADD_TRANSLATOR (Multi_measure_rest_engraver,
                "internalBarNumber "
                "restNumberThreshold "
                "currentCommandColumn "
-               "measurePosition "
-               "measureLength ",
+               "measurePosition ",
                
                /* write */
                ""
index 9628402a5ecec1ce899d4ef1d4ea57002b7529af..1a9f5e11a7801d9f50cc57e5ad3bec1375be6b86 100644 (file)
@@ -22,6 +22,7 @@
 #include "font-interface.hh"
 #include "lookup.hh"
 #include "misc.hh"
+#include "moment.hh"
 #include "output-def.hh"
 #include "paper-column.hh" // urg
 #include "percent-repeat-item.hh"
@@ -118,6 +119,34 @@ Multi_measure_rest::print (SCM smob)
   return mol.smobbed_copy ();
 }
 
+int
+measure_duration_log (Grob *me)
+{
+  SCM sml = dynamic_cast<Spanner *> (me)->get_bound (LEFT)
+                                        ->get_property ("measure-length");
+  bool round = to_boolean (me->get_property ("round-to-longer-rest"));
+  Rational ml = (unsmob_moment (sml)) ? unsmob_moment (sml)->main_part_ : Rational (1);
+
+  double duration_log = -log_2 (ml.Rational::to_double ());
+  int measure_duration_log = int (ceil (duration_log));
+  if (round && duration_log - measure_duration_log < 0)
+    measure_duration_log--;
+
+  SCM duration_logs_list = me->get_property ("usable-duration-logs");
+  int closest_list_elt = -15; // -15 is out of range.
+
+  for (int i = 0; i < scm_to_int (scm_length (duration_logs_list)); i++)
+  {
+    int list_elt = scm_to_int (scm_list_ref (duration_logs_list, scm_from_int (i)));
+    int shortest_distance = abs (measure_duration_log - closest_list_elt);
+    int distance = abs (measure_duration_log - list_elt);
+    if (distance < shortest_distance)
+      closest_list_elt = list_elt;
+  }
+
+  return closest_list_elt;
+}
+
 Stencil
 Multi_measure_rest::symbol_stencil (Grob *me, Real space)
 {
@@ -140,32 +169,16 @@ Multi_measure_rest::symbol_stencil (Grob *me, Real space)
   Real staff_space = Staff_symbol_referencer::staff_space (me);
 
   Font_metric *musfont = Font_interface::get_default_font (me);
+  int mdl = measure_duration_log (me);
 
-  SCM sml = me->get_property ("use-breve-rest");
   if (measures == 1)
     {
-      if (to_boolean (sml))
-       {
-         Stencil s = musfont->find_by_name (Rest::glyph_name (me, -1, "", false));
-
-         s.translate_axis ((space - s.extent (X_AXIS).length ()) / 2, X_AXIS);
-
-         return s;
-       }
-      else
-       {
-         Stencil s = musfont->find_by_name (Rest::glyph_name (me, 0, "", true));
-
-         /*
-           ugh.
-         */
-         if (Staff_symbol_referencer::get_position (me) == 0.0)
-           s.translate_axis (staff_space, Y_AXIS);
-
-         s.translate_axis ((space - s.extent (X_AXIS).length ()) / 2, X_AXIS);
+      Stencil s = musfont->find_by_name (Rest::glyph_name (me, mdl, "", true));
+      if (mdl == 0 && Staff_symbol_referencer::get_position (me) == 0.0)
+        s.translate_axis (staff_space, Y_AXIS);
 
-         return s;
-       }
+      s.translate_axis ((space - s.extent (X_AXIS).length ()) / 2, X_AXIS);
+      return s;
     }
   else
     return church_rest (me, musfont, measures, space);
@@ -208,63 +221,46 @@ Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measures,
 {
   SCM mols = SCM_EOL;
 
-  /* See Wanske pp. 125  */
   int l = measures;
   int count = 0;
   Real symbols_width = 0.0;
-
-  bool use_breve = to_boolean (me->get_property ("use-breve-rest"));
+  SCM duration_logs_list = me->get_property ("usable-duration-logs");
+  int longest_church_rest = 10; // 10 is out of range.
+  for (int i = 0; i < scm_to_int (scm_length (duration_logs_list)); i++)
+  {
+    longest_church_rest = min (longest_church_rest,
+                               scm_to_int (scm_list_ref (duration_logs_list,
+                                                         scm_from_int (i))));
+  }
 
   while (l)
+  {
+    int k;
+    int i = longest_church_rest - 1;
+    int length;
+    int mdl = measure_duration_log (me);
+
+    do
+    {
+      i++;
+      length = int (pow (2.0, -i));
+    }
+    while (i <= 0 &&
+           !(l >= length && mdl >= longest_church_rest - i));
+
+    l -= length;
+    k = mdl + i;
+
+    Stencil r (musfont->find_by_name ("rests." + to_string (k)));
+    if (k == 0)
     {
-      if (use_breve)
-       {
-         int k;
-         if (l >= 2)
-           {
-             l -= 2;
-             k = -2;
-           }
-         else
-           {
-             l -= 1;
-             k = -1;
-           }
-
-         Stencil r (musfont->find_by_name ("rests." + to_string (k)));
-         symbols_width += r.extent (X_AXIS).length ();
-         mols = scm_cons (r.smobbed_copy (), mols);
-       }
-      else
-       {
-         int k;
-         if (l >= 4)
-           {
-             l -= 4;
-             k = -2;
-           }
-         else if (l >= 2)
-           {
-             l -= 2;
-             k = -1;
-           }
-         else
-           {
-             k = 0;
-             l--;
-           }
-
-         Stencil r (musfont->find_by_name ("rests." + to_string (k)));
-         if (k == 0)
-           {
-             Real staff_space = Staff_symbol_referencer::staff_space (me);
-             r.translate_axis (staff_space, Y_AXIS);
-           }
-         symbols_width += r.extent (X_AXIS).length ();
-         mols = scm_cons (r.smobbed_copy (), mols);
-       }
-      count++;
+      Real staff_space = Staff_symbol_referencer::staff_space (me);
+      r.translate_axis (staff_space, Y_AXIS);
     }
+    symbols_width += r.extent (X_AXIS).length ();
+    mols = scm_cons (r.smobbed_copy (), mols);
+    count++;
+  }
 
   /* Make outer padding this much bigger.  */
   Real outer_padding_factor = 1.5;
@@ -367,7 +363,8 @@ ADD_INTERFACE (Multi_measure_rest,
               "hair-thickness "
               "measure-count "
               "minimum-length "
+              "round-to-longer-rest "
               "spacing-pair "
               "thick-thickness "
-              "use-breve-rest "
+               "usable-duration-logs "
               );
index e225d97f1fd1bf4285988c27700839ebb3bca595..331d6056168363eb84aac48861b21aa7ec2a2360 100644 (file)
@@ -36,6 +36,7 @@ class New_dynamic_engraver : public Engraver
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_TRANSLATOR_LISTENER (absolute_dynamic);
   DECLARE_TRANSLATOR_LISTENER (span_dynamic);
+  DECLARE_TRANSLATOR_LISTENER (break_span);
 
 protected:
   virtual void process_music ();
@@ -54,6 +55,7 @@ private:
   Item *script_;
   Stream_event *script_event_;
   Stream_event *current_span_event_;
+  bool end_new_spanner_;
 };
 
 New_dynamic_engraver::New_dynamic_engraver ()
@@ -64,6 +66,7 @@ New_dynamic_engraver::New_dynamic_engraver ()
   finished_spanner_ = 0;
   current_spanner_ = 0;
   accepted_spanevents_drul_.set (0, 0);
+  end_new_spanner_ = false;
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, absolute_dynamic);
@@ -82,6 +85,22 @@ New_dynamic_engraver::listen_span_dynamic (Stream_event *ev)
   ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[d], ev);
 }
 
+IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, break_span);
+void
+New_dynamic_engraver::listen_break_span (Stream_event *event)
+{
+  if (event->in_event_class ("break-dynamic-span-event"))
+    {
+      // Case 1: Already have a start dynamic event -> break applies to new
+      //         spanner (created later) -> set a flag
+      // Case 2: no new spanner, but spanner already active -> break it now
+      if (accepted_spanevents_drul_[START])
+        end_new_spanner_ = true;
+      else if (current_spanner_)
+        current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
+    }
+}
+
 SCM
 New_dynamic_engraver::get_property_setting (Stream_event *evt,
                                            char const *evprop,
@@ -132,6 +151,13 @@ New_dynamic_engraver::process_music ()
                                           (start_type + "Text").c_str ());
          if (Text_interface::is_markup (text))
            current_spanner_->set_property ("text", text);
+         /*
+           If the line of a text spanner is hidden, end the alignment spanner
+           early: this allows dynamics to be spaced individually instead of
+           being linked together.
+         */
+         if (current_spanner_->get_property ("style") == ly_symbol2scm ("none"))
+           current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
        }
       else
        {
@@ -144,6 +170,12 @@ New_dynamic_engraver::process_music ()
          current_spanner_ = make_spanner ("Hairpin",
                                           current_span_event_->self_scm ());
        }
+      // if we have a break-dynamic-span event right after the start dynamic, break the new spanner immediately
+      if (end_new_spanner_)
+        {
+          current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
+          end_new_spanner_ = false;
+        }
       if (finished_spanner_)
        {
          if (Hairpin::has_interface (finished_spanner_))
@@ -186,6 +218,7 @@ New_dynamic_engraver::stop_translation_timestep ()
   script_event_ = 0;
   accepted_spanevents_drul_.set (0, 0);
   finished_spanner_ = 0;
+  end_new_spanner_ = false;
 }
 
 void
index d1ee31083792d90ac3958e71e87b0bfd8d1b0e13..455702b0aa82866dada472910eb3cfbda2a54558 100644 (file)
@@ -196,4 +196,4 @@ LY_DEFINE (ly_paper_fonts, "ly:paper-fonts",
     }
 
   return font_list;
-}
+}
\ No newline at end of file
index fe1d163658a548f7a59489c348bf3eadb8ea91cf..5d55c7a9f41e26114d796dd8e22fa0c84136afcc 100644 (file)
@@ -265,6 +265,10 @@ Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break, Prob_bre
   footnote_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
   footnote_footer_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-footer-padding"), 0.0);
 
+  footnote_number_raise_ = (to_boolean (pb->paper_->c_variable ("footnote-auto-numbering"))
+                            ? robust_scm2double (pb->paper_->c_variable ("footnote-number-raise"), 0.0)
+                            : 0.0);
+  
   if (systems_per_page_ && (max_systems_per_page_ || min_systems_per_page_))
     {
       warning (_f ("ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"));
@@ -342,6 +346,12 @@ Page_breaking::footnote_footer_padding () const
   return footnote_footer_padding_;
 }
 
+Real
+Page_breaking::footnote_number_raise () const
+{
+  return footnote_number_raise_;
+}
+
 bool
 Page_breaking::too_many_lines (int line_count) const
 {
@@ -521,15 +531,15 @@ Page_breaking::breakpoint_property (vsize breakpoint, char const *str)
 }
 
 SCM
-Page_breaking::get_page_configuration (SCM systems, int page_num, bool ragged, bool last)
+Page_breaking::get_page_configuration (SCM systems, int page_num, int footnote_count, bool ragged, bool last)
 {
   SCM dummy_page = make_page (page_num, last);
-  Page_layout_problem layout (book_, dummy_page, systems);
+  Page_layout_problem layout (book_, dummy_page, systems, footnote_count);
   return scm_is_pair (systems) ? layout.solution (ragged) : SCM_EOL;
 }
 
 SCM
-Page_breaking::draw_page (SCM systems, SCM configuration, int page_num, bool last)
+Page_breaking::draw_page (SCM systems, SCM configuration, int page_num, int footnote_num, bool last)
 {
   // Create a stencil for each system.
   SCM paper_systems = SCM_EOL;
@@ -556,8 +566,16 @@ Page_breaking::draw_page (SCM systems, SCM configuration, int page_num, bool las
   p->set_property ("configuration", configuration);
 
   Stencil *foot = unsmob_stencil (p->get_property ("foot-stencil"));
-  SCM footnotes = Page_layout_problem::get_footnotes_from_lines (systems, footnote_padding ());
-  Page_layout_problem::add_footnotes_to_footer (footnotes, foot, unsmob_paper_book (p->get_property ("paper-book")));
+
+  footnote_num = (to_boolean (book_->paper_->c_variable ("reset-footnotes-on-new-page"))
+                  ? 0
+                  : footnote_num);
+
+  SCM footnotes = Page_layout_problem::get_footnotes_from_lines (systems,
+                                                                 footnote_num,
+                                                                 book_);
+
+  Page_layout_problem::add_footnotes_to_footer (footnotes, foot, book_);
 
   p->set_property ("foot-stencil", foot->smobbed_copy ());
   scm_apply_1 (page_stencil, page, SCM_EOL);
@@ -584,8 +602,9 @@ Page_breaking::make_pages (vector<vsize> lines_per_page, SCM systems)
   // themselves. If this happens before the neighbouring staves have
   // been laid out, bad side-effects could happen (in particular,
   // Align_interface::align_to_ideal_distances might be called).
-  SCM systems_and_configs = SCM_EOL;
-
+  SCM systems_configs_fncounts = SCM_EOL;
+  vsize footnote_count = 0;
+    
   for (vsize i = 0; i < lines_per_page.size (); i++)
     {
       int page_num = i + first_page_number;
@@ -593,22 +612,24 @@ Page_breaking::make_pages (vector<vsize> lines_per_page, SCM systems)
       bool rag = ragged () || (bookpart_last_page && ragged_last ());
       SCM line_count = scm_from_int (lines_per_page[i]);
       SCM lines = scm_list_head (systems, line_count);
-      SCM config = get_page_configuration (lines, page_num, rag, bookpart_last_page);
-
-      systems_and_configs = scm_cons (scm_cons (lines, config), systems_and_configs);
+      int fn_lines = Page_layout_problem::get_footnote_count (lines);
+      SCM config = get_page_configuration (lines, page_num, footnote_count, rag, bookpart_last_page);
+      
+      systems_configs_fncounts = scm_cons (scm_list_3 (lines, config, scm_from_int ((int)footnote_count)), systems_configs_fncounts);
+      footnote_count += fn_lines;
       systems = scm_list_tail (systems, line_count);
     }
 
   // Now it's safe to make the pages.
   int page_num = first_page_number + lines_per_page.size () - 1;
-  for (SCM s = systems_and_configs; scm_is_pair (s); s = scm_cdr (s))
+  for (SCM s = systems_configs_fncounts; scm_is_pair (s); s = scm_cdr (s))
     {
       SCM lines = scm_caar (s);
-      SCM config = scm_cdar (s);
-      
-      bool bookpart_last_page = (s == systems_and_configs);
-      SCM page = draw_page (lines, config, page_num, bookpart_last_page);
+      SCM config = scm_cadar (s);
+      int footnote_num = scm_to_int (scm_caddar (s));
 
+      bool bookpart_last_page = (s == systems_configs_fncounts);
+      SCM page = draw_page (lines, config, page_num, footnote_num, bookpart_last_page);
       /* collect labels */
       SCM page_num_scm = scm_from_int (page_num);
       for (SCM l = lines ; scm_is_pair (l)  ; l = scm_cdr (l))
index 9ee2b3fea11b9ae3a22ef74ebb140515b9224fd4..17c2912e148b2c33b8d721c315df27303f24ae61 100644 (file)
 #include "system.hh"
 #include "text-interface.hh"
 
+/*
+ Returns the number of footntoes associated with a given line.
+*/
+
+vsize
+Page_layout_problem::get_footnote_count (SCM lines)
+{
+  vsize fn_count = 0;
+  for (SCM s = lines; scm_is_pair (s); s = scm_cdr (s))
+    {
+      if (Grob *g = unsmob_grob (scm_car (s)))
+       {
+         System *sys = dynamic_cast<System *> (g);
+         if (!sys)
+            {
+              programming_error ("got a grob for footnotes that wasn't a System");
+              continue;
+            }
+          fn_count += sys->num_footnotes ();
+        }
+      else if (Prob *p = unsmob_prob (scm_car (s)))
+        {
+          SCM stencils = p->get_property ("footnotes");
+          if (stencils == SCM_EOL)
+            continue;
+          for (SCM st = stencils; scm_is_pair (st); st = scm_cdr (st))
+            fn_count++;
+        }
+    }
+
+  return fn_count;
+}
+
 /*
    Returns a stencil for the footnote of each system.  This stencil may
    itself be comprised of several footnotes.
+
+   This is a long function, but it seems better to keep it intact rather than
+   splitting it into parts.
 */
 
 SCM
-Page_layout_problem::get_footnotes_from_lines (SCM lines, Real padding)
+Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_book *pb)
 {
+  /*
+    first, we have to see how many footnotes are on this page.
+    we need to do this first so that we can line them up
+  */
+
+  Output_def *paper = pb->paper_;
+
+  if (!paper)
+    {
+      programming_error ("Cannot get footnotes because there is no valid paper block.");
+      return SCM_EOL;
+    }
+
+  SCM number_footnote_table = pb->top_paper ()->c_variable ("number-footnote-table");
+  if (!scm_is_pair (number_footnote_table))
+    number_footnote_table = SCM_EOL;
+  SCM numbering_function = paper->c_variable ("footnote-numbering-function");
+  SCM layout = paper->self_scm ();
+  SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"),
+                          paper->self_scm ());
+  Real padding = robust_scm2double (paper->c_variable ("footnote-padding"), 0.0);
+  Real number_raise = robust_scm2double (paper->c_variable ("footnote-number-raise"), 0.0);
+
+  vsize fn_count = get_footnote_count (lines);
+
+  // now, make the footnote stencils with the numbering function
+  SCM numbers = SCM_EOL;
+  SCM in_text_numbers = SCM_EOL;
+  bool do_numbering = to_boolean (paper->c_variable ("footnote-auto-numbering"));
+  // if there's no numbering, skip all this
+  /*
+    TODO: This recalculates numbering every time this function is called, including once
+    after the balloon prints are called.  Although it is not a huge computational drain,
+    it'd be more elegant to turn this calculation off when it is no longer needed.
+    
+    In a separate commit, it'd be nice to streamline the way that page layout property
+    is handled so that the process of building `config's in page-breaking does result
+    in duplicated work, either by making this process less complicated or (preferably)
+    by passing its results downstream.
+  */
+  if (do_numbering)
+    {
+      vector<SCM> footnote_number_markups; // Holds the numbering markups.
+      vector<Stencil *> footnote_number_stencils; // Holds translated versions of the stencilized numbering markups.
+      for (vsize i = 0; i < fn_count; i++)
+        {
+          SCM markup = scm_call_1 (numbering_function, scm_from_int (counter));
+          Stencil *s = unsmob_stencil (Text_interface::interpret_markup (layout, props, markup));
+          if (!s)
+            {
+              programming_error ("Your numbering function needs to return a stencil.");
+              markup = SCM_EOL;
+              s = new Stencil (Box (Interval (0,0), Interval (0,0)), SCM_EOL);
+            }
+          footnote_number_markups.push_back (markup);
+          footnote_number_stencils.push_back (s);
+          counter++;
+        }
+
+      // find the maximum X_AXIS length
+      Real max_length = -infinity_f;
+      for (vsize i = 0; i < fn_count; i++)
+        max_length = max (max_length, footnote_number_stencils[i]->extent (X_AXIS).length ());
+
+      /*
+        translate each stencil such that it attains the correct maximum length and bundle the
+        footnotes into a scheme object.
+      */
+      SCM *tail = &numbers;
+      SCM *in_text_tail = &in_text_numbers;
+
+      for (vsize i = 0; i < fn_count; i++)
+        {
+          *in_text_tail = scm_cons (footnote_number_markups[i], SCM_EOL);
+          in_text_tail = SCM_CDRLOC (*in_text_tail);
+          footnote_number_stencils[i]->translate_axis (max_length - footnote_number_stencils[i]->extent (X_AXIS).length (), X_AXIS);
+          *tail = scm_cons (footnote_number_stencils[i]->smobbed_copy (), SCM_EOL);
+          tail = SCM_CDRLOC (*tail);
+        }
+    }
+  // build the footnotes
+
   SCM footnotes = SCM_EOL;
-  // ugh...code dup from the Page_layout_problem constructor
+
   for (SCM s = lines; scm_is_pair (s); s = scm_cdr (s))
     {
+      // Take care of musical systems.
       if (Grob *g = unsmob_grob (scm_car (s)))
        {
          System *sys = dynamic_cast<System *> (g);
@@ -54,8 +173,49 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, Real padding)
               programming_error ("got a grob for footnotes that wasn't a System");
               continue;
             }
-          footnotes = scm_cons (sys->make_footnote_stencil (padding).smobbed_copy (), footnotes);
+            Stencil mol;
+
+            for (vsize i = 0; i < sys->footnote_grobs ()->size (); i++)
+              {
+                Grob *footnote = sys->footnote_grobs ()->at (i);
+                SCM footnote_markup = footnote->get_property ("footnote-text");
+                if (Spanner *orig = dynamic_cast<Spanner *>(footnote))
+                  if (orig->is_broken ())
+                    footnote_markup = orig->broken_intos_[0]->get_property ("footnote-text");
+
+                if (!Text_interface::is_markup (footnote_markup))
+                  continue;
+
+                SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"),
+                                        paper->self_scm ());
+
+                SCM footnote_stl = Text_interface::interpret_markup (paper->self_scm (),
+                                                                     props, footnote_markup);
+
+                Stencil *footnote_stencil = unsmob_stencil (footnote_stl);
+                if (do_numbering)
+                  {
+                    SCM annotation_scm = scm_car (in_text_numbers);
+                    footnote->set_property ("text", annotation_scm);
+                    if (Spanner *orig = dynamic_cast<Spanner *>(footnote))
+                      {
+                        orig->set_property ("text", annotation_scm);
+                        if (orig->is_broken ())
+                          for (vsize i = 0; i < orig->broken_intos_.size (); i++)
+                              orig->broken_intos_[i]->set_property ("text", annotation_scm);
+                      }
+                    
+                    Stencil *annotation = unsmob_stencil (scm_car (numbers));
+                    annotation->translate_axis (footnote_stencil->extent (Y_AXIS)[UP] + number_raise - annotation->extent(Y_AXIS)[UP], Y_AXIS);
+                    footnote_stencil->add_at_edge (X_AXIS, LEFT, *annotation, 0.0);
+                    numbers = scm_cdr (numbers);
+                    in_text_numbers = scm_cdr (in_text_numbers);
+                  }
+                mol.add_at_edge (Y_AXIS, DOWN, *footnote_stencil, padding);
+              }
+            footnotes = scm_cons (mol.smobbed_copy (), footnotes);
         }
+      // Take care of top-level markups
       else if (Prob *p = unsmob_prob (scm_car (s)))
         {
           SCM stencils = p->get_property ("footnotes");
@@ -64,11 +224,31 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, Real padding)
           Stencil footnote_stencil;
 
           for (SCM st = stencils; scm_is_pair (st); st = scm_cdr (st))
-            footnote_stencil.add_at_edge (Y_AXIS, DOWN, *unsmob_stencil (scm_car (st)), padding);
+            {
+              Stencil mol;
+              Stencil *footnote = unsmob_stencil (scm_cadar (st));
+              mol.add_stencil (*footnote);
+              if (do_numbering)
+                {
+                  Stencil *annotation = unsmob_stencil (scm_car (numbers));
+                  SCM in_text_annotation = scm_car (in_text_numbers);
+                  SCM in_text_stencil = Text_interface::interpret_markup (layout, props, in_text_annotation);
+                  if (!unsmob_stencil (in_text_stencil))
+                    in_text_stencil = SCM_EOL;
+                  number_footnote_table = scm_cons (scm_cons (scm_caar (st), in_text_stencil), number_footnote_table);
+                  annotation->translate_axis (mol.extent (Y_AXIS)[UP] + number_raise - annotation->extent(Y_AXIS)[UP], Y_AXIS);
+                  mol.add_at_edge (X_AXIS, LEFT, *annotation, 0.0);
+                  numbers = scm_cdr (numbers);
+                  in_text_numbers = scm_cdr (in_text_numbers);
+                }
+              footnote_stencil.add_at_edge (Y_AXIS, DOWN, mol, padding);
+            }
           footnotes = scm_cons (footnote_stencil.smobbed_copy (), footnotes);
         }
     }
 
+  // note that this line of code doesn't do anything if numbering isn't turned on
+  pb->top_paper ()->set_variable (ly_symbol2scm ("number-footnote-table"), number_footnote_table);
   if (!scm_is_pair (footnotes))
     return SCM_EOL;
 
@@ -116,7 +296,7 @@ Page_layout_problem::add_footnotes_to_footer (SCM footnotes, Stencil *foot, Pape
           footnotes_found = true;
         }
     }
-  
+
   if (footnotes_found)
     {
       Stencil *separator = get_footnote_separator_stencil (pb->paper_);
@@ -125,7 +305,7 @@ Page_layout_problem::add_footnotes_to_footer (SCM footnotes, Stencil *foot, Pape
     }
 }
 
-Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM systems)
+Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM systems, int footnote_count)
   : bottom_skyline_ (DOWN)
 {
   Prob *page = unsmob_prob (page_scm);
@@ -139,13 +319,17 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst
     {
       Stencil *head = unsmob_stencil (page->get_property ("head-stencil"));
       Stencil *foot = unsmob_stencil (page->get_property ("foot-stencil"));
-      
-      Real footnote_padding = 0.0;
+
       if (pb && pb->paper_)
-        footnote_padding = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
-      SCM footnotes = get_footnotes_from_lines (systems, footnote_padding);
-      add_footnotes_to_footer (footnotes, foot, pb);
-      
+        {
+          if (to_boolean (pb->paper_->c_variable ("reset-footnotes-on-new-page")))
+            footnote_count = 0;
+          SCM footnotes = get_footnotes_from_lines (systems, footnote_count, pb);
+          add_footnotes_to_footer (footnotes, foot, pb);
+        }
+      else
+        warning ("A page layout problem has been initiated that cannot accommodate footnotes.");
+
       header_height_ = head ? head->extent (Y_AXIS).length () : 0;
       footer_height_ = foot ? foot->extent (Y_AXIS).length () : 0;
       page_height_ = robust_scm2double (page->get_property ("paper-height"), 100);
@@ -775,12 +959,7 @@ Page_layout_problem::get_fixed_spacing (Grob *before, Grob *after, int spaceable
        return robust_scm2double (cached, 0.0);
     }
 
-  SCM spec = Page_layout_problem::get_spacing_spec (before, after, pure, start, end);
   Real ret = -infinity_f;
-  Real stretchability = 0;
-  if (Page_layout_problem::read_spacing_spec (spec, &stretchability, ly_symbol2scm ("stretchability"))
-      && stretchability == 0)
-    Page_layout_problem::read_spacing_spec (spec, &ret, ly_symbol2scm ("basic-distance"));
 
   // If we're pure, then paper-columns have not had their systems set,
   // and so elts[i]->get_system () is unreliable.
@@ -802,7 +981,7 @@ Page_layout_problem::get_fixed_spacing (Grob *before, Grob *after, int spaceable
   // Cache the result.  As above, we ignore "end."
   if (pure)
     after_sp->cache_pure_property (cache_symbol, start, 0, scm_from_double (ret));
-    
+
   return ret;
 }
 
@@ -894,10 +1073,7 @@ Page_layout_problem::alter_spring_from_spacing_spec (SCM spec, Spring* spring)
   spring->set_default_strength ();
 
   if (read_spacing_spec (spec, &stretch, ly_symbol2scm ("stretchability")))
-    {
-      spring->set_inverse_stretch_strength (stretch);
-      spring->set_inverse_compress_strength (stretch);
-    }
+    spring->set_inverse_stretch_strength (stretch);
 }
 
 vector<Grob*>
index b04d3f394a17bde64118bc01598bf6bf19f04488..bae7ae6fb773d861440184ccf9685d194305eebb 100644 (file)
@@ -77,7 +77,8 @@ Page_spacing::account_for_footnotes (Line_details const &line)
       footnote_height += (has_footnotes_
                           ? 0.0
                           : (breaker_->footnote_separator_stencil_height ()
-                             + breaker_->footnote_padding ()));
+                             + breaker_->footnote_padding ()
+                             + breaker_->footnote_number_raise ()));
 
       has_footnotes_ = true;
       Interval extent = line.footnotes_[i]->extent (Y_AXIS);
index a4fea75109bcb15141db97da016cd30d291375a2..26f2e53fb4b5fce47b0294c5626cd3f9018cb733 100644 (file)
@@ -47,6 +47,10 @@ Pango_font::Pango_font (PangoFT2FontMap *fontmap,
                        PangoFontDescription const *description,
                        Real output_scale)
 {
+  // This line looks stupid, but if we don't initialize physical_font_tab_ before
+  // we allocate memory in scm_c_make_hash_table, then that could trigger a garbage
+  // collection.
+  physical_font_tab_ = SCM_EOL;
   physical_font_tab_ = scm_c_make_hash_table (11);
   PangoDirection pango_dir = PANGO_DIRECTION_LTR;
   context_ = pango_context_new ();
index 9907e56d95a16b94d1f90d0e4c040c96e9c86d2a..7fcea66c62d5831c898eb8c52a69a8d1ffe2a6a1 100644 (file)
@@ -531,7 +531,7 @@ Paper_book::get_system_specs ()
              ps->set_property ("first-markup-line", SCM_BOOL_F);
 
              paper_system_set_stencil (ps, *unsmob_stencil (t));
-             
+
              SCM footnotes = get_footnotes (unsmob_stencil (t)->expr ());
              ps->set_property ("footnotes", footnotes);
              ps->set_property ("is-title", SCM_BOOL_T);
index 711d919446d4f8d21a3205563d6dde914aceb8b2..437a0eb450d32e165536e693f1fa63fdf92f9f7f 100644 (file)
@@ -18,6 +18,7 @@
 */
 
 #include "paper-system.hh"
+#include "international.hh"
 #include "item.hh"
 
 Prob *
@@ -59,27 +60,19 @@ get_footnotes (SCM expr)
       for (SCM x = scm_cdr (expr); scm_is_pair (x); x = scm_cdr (x))
         {
           SCM footnote = get_footnotes (scm_car (x));
-          if (scm_is_pair (footnote))
-            {
-              for (SCM y = footnote; scm_is_pair (y); y = scm_cdr (y))
-                {
-                  *tail = scm_cons (scm_car (y), SCM_EOL);
-                  tail = SCM_CDRLOC (*tail);
-                }
-            }
-          else if (SCM_EOL != footnote)
+          if (SCM_EOL != footnote)
             {
               *tail = scm_cons (footnote, SCM_EOL);
               tail = SCM_CDRLOC (*tail);
             }
         }
-      return out;
+      return scm_append (out);
     }
   if (head == ly_symbol2scm ("translate-stencil"))
     return get_footnotes (scm_caddr (expr));
 
   if (head == ly_symbol2scm ("footnote"))
-    return scm_cadr (expr);
+    return scm_list_1 (scm_cdr (expr));
 
   return SCM_EOL;
 }
index 0bb4c152f273455dd1e02f201803e66d8eeaa685..2a4032e4bf65ba3faa46f047454d3b0949b16a23 100644 (file)
@@ -270,6 +270,8 @@ If we give names, Bison complains.
 /* Artificial tokens, for more generic function syntax */
 %token <i> EXPECT_MARKUP;
 %token <i> EXPECT_MUSIC;
+%token <i> EXPECT_PITCH;
+%token <i> EXPECT_DURATION;
 %token <i> EXPECT_SCM;
 %token <i> EXPECT_MARKUP_LIST
 /* After the last argument. */
@@ -325,6 +327,8 @@ If we give names, Bison complains.
 /* Music */
 %type <scm> composite_music
 %type <scm> grouped_music_list
+%type <scm> closed_music
+%type <scm> open_music
 %type <scm> music
 %type <scm> prefix_composite_music
 %type <scm> repeated_music
@@ -388,9 +392,9 @@ If we give names, Bison complains.
 %type <scm> full_markup_list
 %type <scm> function_scm_argument
 %type <scm> function_arglist
-%type <scm> function_arglist_music_last
 %type <scm> function_arglist_nonmusic_last
-%type <scm> function_arglist_nonmusic
+%type <scm> closed_function_arglist
+%type <scm> open_function_arglist
 %type <scm> identifier_init
 %type <scm> lilypond_header
 %type <scm> lilypond_header_body
@@ -410,9 +414,10 @@ If we give names, Bison complains.
 %type <scm> mode_changing_head
 %type <scm> mode_changing_head_with_context
 %type <scm> multiplied_duration
-%type <scm> music_function_identifier_musicless_prefix
 %type <scm> music_function_event
+%type <scm> music_function_event_arglist
 %type <scm> music_function_chord_body
+%type <scm> music_function_chord_body_arglist
 %type <scm> new_chord
 %type <scm> new_lyrics
 %type <scm> number_expression
@@ -965,6 +970,7 @@ music_list:
 music:
        simple_music
        | composite_music
+       | MUSIC_IDENTIFIER
        ;
 
 alternative_music:
@@ -1004,7 +1010,6 @@ simultaneous_music:
 
 simple_music:
        event_chord
-       | MUSIC_IDENTIFIER
        | music_property_def
        | context_change
        ;
@@ -1054,6 +1059,18 @@ composite_music:
        | grouped_music_list { $$ = $1; }
        ;
 
+/* Music that can't be followed by additional events or durations */
+closed_music:
+       MUSIC_IDENTIFIER
+       | grouped_music_list
+       ;
+
+/* Music that potentially accepts additional events or durations */
+open_music:
+       simple_music
+       | prefix_composite_music
+       ;
 grouped_music_list:
        simultaneous_music              { $$ = $1; }
        | sequential_music              { $$ = $1; }
@@ -1068,50 +1085,54 @@ function_scm_argument:
  MUSIC_FUNCTION EXPECT_MUSIC EXPECT_SCM EXPECT_SCM EXPECT_NO_MORE_ARGS
 and this rule returns the reversed list of arguments. */
 
-function_arglist_music_last:
-       EXPECT_MUSIC function_arglist music {
-               $$ = scm_cons ($3, $2);
-       }
+
+function_arglist:
+       closed_function_arglist
+       | open_function_arglist
        ;
 
-function_arglist_nonmusic_last:
-       EXPECT_MARKUP function_arglist full_markup {
+open_function_arglist:
+       EXPECT_MUSIC function_arglist open_music {
                $$ = scm_cons ($3, $2);
        }
-       | EXPECT_MARKUP function_arglist simple_string {
-               $$ = scm_cons ($3, $2);
-       }
-       | EXPECT_SCM function_arglist function_scm_argument {
+       ;
+
+/* a closed argument list is one that does not end in a music
+   expression that could still take a duration or event */
+
+closed_function_arglist:
+       function_arglist_nonmusic_last
+       | EXPECT_MUSIC function_arglist closed_music {
                $$ = scm_cons ($3, $2);
-       }
+               }
        ;
 
-function_arglist_nonmusic: EXPECT_NO_MORE_ARGS {
+function_arglist_nonmusic_last:
+       EXPECT_NO_MORE_ARGS {
+               /* This is for 0-ary functions, so they don't need to
+                  read a lookahead token */
                $$ = SCM_EOL;
        }
-       | EXPECT_MARKUP function_arglist_nonmusic full_markup {
+       | EXPECT_MARKUP function_arglist full_markup {
                $$ = scm_cons ($3, $2);
        }
-       | EXPECT_MARKUP function_arglist_nonmusic simple_string {
+       | EXPECT_MARKUP function_arglist simple_string {
                $$ = scm_cons ($3, $2);
        }
-       | EXPECT_SCM function_arglist_nonmusic function_scm_argument {
-               $$ = scm_cons ($3, $2);
+       | EXPECT_PITCH function_arglist pitch {
+               $$ = scm_cons ($3, $2);
        }
-       ;
-
-function_arglist: EXPECT_NO_MORE_ARGS {
-               /* This is for 0-ary functions, so they don't need to
-                  read a lookahead token */
-               $$ = SCM_EOL;
+       | EXPECT_DURATION closed_function_arglist duration_length {
+               $$ = scm_cons ($3, $2);
+       }
+       | EXPECT_SCM function_arglist function_scm_argument {
+               $$ = scm_cons ($3, $2);
        }
-       | function_arglist_music_last
-       | function_arglist_nonmusic_last
        ;
 
 generic_prefix_music_scm:
        MUSIC_FUNCTION function_arglist {
-               $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($2, SCM_EOL));
+               $$ = scm_cons ($1, scm_cons (make_input (@$), scm_reverse_x ($2, SCM_EOL)));
        }
        ;
 
@@ -1253,38 +1274,23 @@ relative_music:
 new_lyrics:
        ADDLYRICS { PARSER->lexer_->push_lyric_state (); }
        /*cont */
-       grouped_music_list {
+       closed_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 {
-               PARSER->lexer_->push_lyric_state (); }
-       MUSIC_IDENTIFIER {
-               PARSER->lexer_->pop_state ();
-               $$ = scm_cons ($3, SCM_EOL);
-       }
-       | new_lyrics ADDLYRICS {
-               PARSER->lexer_->push_lyric_state ();
-       } grouped_music_list {
-               PARSER->lexer_->pop_state ();
-               $$ = scm_cons ($4, $1);
-       }
        | new_lyrics ADDLYRICS {
                PARSER->lexer_->push_lyric_state ();
-       } MUSIC_IDENTIFIER {
+       } closed_music {
                PARSER->lexer_->pop_state ();
                $$ = scm_cons ($4, $1);
        }
        ;
 
 re_rhythmed_music:
-       grouped_music_list new_lyrics {
-               $$ = MAKE_SYNTAX ("add-lyrics", @$, $1, scm_reverse_x ($2, SCM_EOL));
-       }
-       | MUSIC_IDENTIFIER new_lyrics {
+       closed_music new_lyrics {
                $$ = MAKE_SYNTAX ("add-lyrics", @$, $1, scm_reverse_x ($2, SCM_EOL));
        }
        | LYRICSTO simple_string {
@@ -1447,7 +1453,7 @@ simple_string: STRING {
 scalar: string {
                $$ = $1;
        }
-       | LYRICS_STRING {
+       | lyric_element {
                $$ = $1;
        }
        | bare_number {
@@ -1563,7 +1569,6 @@ chord_body_element:
        }
        | DRUM_PITCH post_events {
                Music *n = MY_MAKE_MUSIC ("NoteEvent", @$);
-               n->set_property ("duration", $2);
                n->set_property ("drum-type", $1);
 
                if (scm_is_pair ($2)) {
@@ -1577,36 +1582,43 @@ chord_body_element:
        }
        ;
 
-music_function_identifier_musicless_prefix: MUSIC_FUNCTION {
-               SCM sig = scm_object_property (yylval.scm, ly_symbol2scm ("music-function-signature"));
-               if (scm_is_pair (sig) && to_boolean (scm_memq (ly_music_p_proc, scm_cdr (scm_reverse (sig)))))
-               {
-                       PARSER->parser_error (@$, "Music function applied to event may not have a Music argument, except as the last argument.");
-               }
+/* We can't accept a music argument, not even a closed one,
+ * immediately before chord_body_elements, otherwise a function \fun
+ * with a signature of two music arguments can't be sorted out
+ * properly in a construct like
+ * <\fun { c } \fun { c } c>
+ * The second call could be interpreted either as a chord constituent
+ * or a music expression.
+ */
+
+music_function_chord_body_arglist:
+       function_arglist_nonmusic_last
+       | EXPECT_MUSIC music_function_chord_body_arglist chord_body_element {
+               $$ = scm_cons ($3, $2);
        }
        ;
 
 music_function_chord_body:
-       /* We could allow chord functions to have multiple music arguments,
-          but it's more consistent with music_function_event if we
-          prohibit it here too */
-       music_function_identifier_musicless_prefix EXPECT_MUSIC function_arglist_nonmusic chord_body_element {
-               $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($3, scm_list_1 ($4)));
+       MUSIC_FUNCTION music_function_chord_body_arglist {
+               $$ = scm_cons ($1, scm_cons (make_input (@$), scm_reverse_x ($2, SCM_EOL)));
        }
-       | music_function_identifier_musicless_prefix function_arglist_nonmusic {
-               $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($2, SCM_EOL));
+       ;
+
+/* We could accept a closed music argument before the post events
+ * indicated by a trailing argument list.  For symmetry with chord
+ * bodies and in order to avoid too tricky and complex behavior, we
+ * refrain from doing so.
+ */
+music_function_event_arglist:
+       function_arglist_nonmusic_last
+       | EXPECT_MUSIC music_function_event_arglist post_event {
+               $$ = scm_cons ($3, $2);
        }
        ;
 
 music_function_event:
-       /* Post-events can only have the last argument as music, without this
-          restriction we get a shift/reduce conflict from e.g.
-          c8-\partcombine c8 -. */
-       music_function_identifier_musicless_prefix EXPECT_MUSIC function_arglist_nonmusic post_event {
-               $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($3, scm_list_1 ($4)));
-       }
-       | music_function_identifier_musicless_prefix function_arglist_nonmusic {
-               $$ = ly_append2 (scm_list_2 ($1, make_input (@$)), scm_reverse_x ($2, SCM_EOL));
+       MUSIC_FUNCTION music_function_event_arglist {
+               $$ = scm_cons ($1, scm_cons (make_input (@$), scm_reverse_x ($2, SCM_EOL)));
        }
        ;
 
index 8ace05fe10d8bad48f7017fa989ccb65a0cf236b..839554f7e9af9a1d7f3c174503e4bad58e34a73c 100644 (file)
 
 #include "translator.icc"
 
-/*
-  It is possible that a slur starts and ends on the same note.  At
-  least, it is for phrasing slurs: a note can be both beginning and
-  ending of a phrase.
-
-*/
 
 /*
   NOTE NOTE NOTE
 
-  This is largely similar to Slur_engraver. Check if fixes apply there too.  
+  This is largely similar to Slur_engraver. Check if fixes
+  apply there too.  
 
   (on principle, engravers don't use inheritance for code sharing)
   
  */
+
+/*
+  It is possible that a slur starts and ends on the same note.  At
+  least, it is for phrasing slurs: a note can be both beginning and
+  ending of a phrase.
+
+*/
 class Phrasing_slur_engraver : public Engraver
 {
-  Drul_array<Stream_event *> events_;
-  Stream_event *running_slur_start_;
+  vector<Stream_event *> start_events_;
+  vector<Stream_event *> stop_events_;
   vector<Grob*> slurs_;
   vector<Grob*> end_slurs_;
 
 protected:
-  void acknowledge_extra_object (Grob_info);
+  DECLARE_TRANSLATOR_LISTENER (phrasing_slur);
   DECLARE_ACKNOWLEDGER (accidental);
   DECLARE_ACKNOWLEDGER (fingering);
   DECLARE_ACKNOWLEDGER (note_column);
@@ -62,33 +64,33 @@ protected:
   DECLARE_ACKNOWLEDGER (text_script);
   DECLARE_ACKNOWLEDGER (tie);
   DECLARE_ACKNOWLEDGER (tuplet_number);
-  DECLARE_TRANSLATOR_LISTENER (phrasing_slur);
 
+  void acknowledge_extra_object (Grob_info);
   void stop_translation_timestep ();
-  virtual void finalize ();
   void process_music ();
 
+  virtual void finalize ();
+
+
 public:
   TRANSLATOR_DECLARATIONS (Phrasing_slur_engraver);
 };
 
 Phrasing_slur_engraver::Phrasing_slur_engraver ()
 {
-  events_[START] = events_[STOP] = 0;
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Phrasing_slur_engraver, phrasing_slur);
 void
 Phrasing_slur_engraver::listen_phrasing_slur (Stream_event *ev)
 {
-  /*
-    Let's not start more than one slur per moment.
-  */
   Direction d = to_dir (ev->get_property ("span-direction"));
   if (d == START)
-    ASSIGN_EVENT_ONCE (events_[START], ev);
-  else if (d == STOP && !slurs_.empty ())
-    ASSIGN_EVENT_ONCE (events_[STOP], ev);
+    start_events_.push_back(ev);
+  else if (d == STOP)
+    stop_events_.push_back(ev);
+  else ev->origin ()->warning (_f ("direction of %s invalid: %d",
+                                  "phrasing-slur-event", int (d)));
 }
 
 void
@@ -120,7 +122,7 @@ Phrasing_slur_engraver::acknowledge_fingering (Grob_info info)
 }
 
 void
-Phrasing_slur_engraver::acknowledge_text_script (Grob_info info)
+Phrasing_slur_engraver::acknowledge_tuplet_number (Grob_info info)
 {
   acknowledge_extra_object (info);
 }
@@ -133,13 +135,13 @@ Phrasing_slur_engraver::acknowledge_script (Grob_info info)
 }
 
 void
-Phrasing_slur_engraver::acknowledge_tie (Grob_info info)
+Phrasing_slur_engraver::acknowledge_text_script (Grob_info info)
 {
   acknowledge_extra_object (info);
 }
 
 void
-Phrasing_slur_engraver::acknowledge_tuplet_number (Grob_info info)
+Phrasing_slur_engraver::acknowledge_tie (Grob_info info)
 {
   acknowledge_extra_object (info);
 }
@@ -153,29 +155,57 @@ Phrasing_slur_engraver::acknowledge_slur (Grob_info info)
 void
 Phrasing_slur_engraver::finalize ()
 {
-  if (slurs_.size ())
-    slurs_[0]->warning (_ ("unterminated phrasing slur"));
+  for (vsize i = 0; i < slurs_.size (); i++)
+    {
+      slurs_[i]->warning (_ ("unterminated phrasing slur"));
+      slurs_[i]->suicide ();
+    }
 }
 
 void
 Phrasing_slur_engraver::process_music ()
 {
-  if (events_[STOP])
+  for (vsize i = 0; i < stop_events_.size (); i++)
     {
-      end_slurs_ = slurs_;
-      slurs_.clear ();
+      Stream_event *ev = stop_events_[i];
+      string id = robust_scm2string (ev->get_property ("spanner-id"), "");
+
+      // Find the slur that is ended with this event (by checking the spanner-id)
+      bool ended = false;
+      for (vsize j = slurs_.size (); j--;)
+        {
+          if (id == robust_scm2string (slurs_[j]->get_property ("spanner-id"), ""))
+            {
+              ended = true;
+              end_slurs_.push_back (slurs_[j]);
+              slurs_.erase (slurs_.begin () + j);
+            }
+        }
+      if (!ended)
+        ev->origin ()->warning (_ ("cannot end phrasing slur"));
     }
 
-  if (events_[START] && slurs_.empty ())
+  for (vsize i = 0; i < start_events_.size (); i++)
     {
-      Stream_event *ev = events_[START];
-
-      Grob *slur = make_spanner ("PhrasingSlur", events_[START]->self_scm ());
-      Direction updown = to_dir (ev->get_property ("direction"));
-      if (updown)
-       set_grob_direction (slur, updown);
-
-      slurs_.push_back (slur);
+      Stream_event *ev = start_events_[i];
+      string id = robust_scm2string (ev->get_property ("spanner-id"), "");
+      bool have_slur = false;
+      // Check if we already have a slur with the same spanner-id.
+      // In that case, don't create a new slur, but print a warning
+      for (vsize i = 0; i < slurs_.size (); i++)
+          have_slur = have_slur || (id == robust_scm2string (slurs_[i]->get_property ("spanner-id"), ""));
+      
+      if (have_slur)
+          ev->origin ()->warning(_ ("already have phrasing slur"));
+      else 
+        {
+          Grob *slur = make_spanner ("PhrasingSlur", ev->self_scm ());
+          Direction updown = to_dir (ev->get_property ("direction"));
+          slur->set_property ("spanner-id", ly_string2scm (id));
+          if (updown)
+            set_grob_direction (slur, updown);
+          slurs_.push_back (slur);
+        }
     }
 }
 
@@ -183,7 +213,8 @@ void
 Phrasing_slur_engraver::stop_translation_timestep ()
 {
   end_slurs_.clear ();
-  events_[START] = events_[STOP] = 0;
+  start_events_.clear ();
+  stop_events_.clear ();
 }
 
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, accidental);
index c87f6f7610657a72e4ac81554015bba6be2b939a..fbd785f9cd05c31119755cf3d91eea29f35b904c 100644 (file)
@@ -32,7 +32,7 @@ Pitch::Pitch (int o, int n, Rational a)
   notename_ = n;
   alteration_ = a;
   octave_ = o;
-  scale_ = default_global_scale; 
+  scale_ = default_global_scale;
   normalize_octave ();
 }
 
@@ -40,8 +40,9 @@ Pitch::Pitch (int o, int n, Rational a)
 Pitch::Pitch ()
 {
   notename_ = 0;
-  scale_ = default_global_scale; 
+  scale_ = default_global_scale;
   octave_ = 0;
+  alteration_ = (Rational)0;
 }
 
 int
@@ -57,7 +58,7 @@ Pitch::compare (Pitch const &m1, Pitch const &m2)
     return n;
   if (a)
     return a > (Rational)0;
-  
+
   return 0;
 }
 
index 62f316b7f1b7220e12d9e8bf773aa5921337fd00..2cb8b486800b2f502a4760e08967370479633fc9 100644 (file)
@@ -31,13 +31,26 @@ bool check_grob (Music *mus, SCM sym);
    translation unit, and set the property.
 */
 void
-Property_iterator::process (Moment m)
+Property_iterator::process (Moment mom)
 {
-  send_stream_event (get_outlet (), "SetProperty", get_music ()->origin (),
-                    ly_symbol2scm ("symbol"), get_music ()->get_property ("symbol"),
-                    ly_symbol2scm ("value"), get_music ()->get_property ("value"));
+  Context *o = get_outlet ();
+  Music *m = get_music ();
+  SCM previous_value = o->get_property (m->get_property ("symbol"));
+  send_stream_event (o, "SetProperty", m->origin (),
+                    ly_symbol2scm ("symbol"), m->get_property ("symbol"),
+                    ly_symbol2scm ("value"), m->get_property ("value"));
+
+  /* For \once \set install a finalization hook to reset the property to the
+   * previous value after the timestep */
+  if (to_boolean (m->get_property ("once")))
+    {
+      Global_context *tg = get_outlet ()->get_global_context ();
+      tg->add_finalization (scm_list_n (once_finalization_proc,
+                                       o->self_scm (), m->self_scm (),
+                                       ly_quote_scm (previous_value), SCM_UNDEFINED));
+    }
   
-  Simple_music_iterator::process (m);
+  Simple_music_iterator::process (mom);
 }
 
 void
@@ -50,30 +63,25 @@ Property_unset_iterator::process (Moment m)
   Simple_music_iterator::process (m);
 }
 
-MAKE_SCHEME_CALLBACK (Property_iterator, once_finalization, 2);
+MAKE_SCHEME_CALLBACK (Property_iterator, once_finalization, 3);
 SCM
-Property_iterator::once_finalization (SCM ctx, SCM music)
+Property_iterator::once_finalization (SCM ctx, SCM music, SCM previous_value)
 {
   Music *m = unsmob_music (music);
   Context *c = unsmob_context (ctx);
 
-  send_stream_event (c, "UnsetProperty", m->origin (),
-                    ly_symbol2scm ("symbol"), m->get_property ("symbol"));
+  // Do not use UnsetProperty, which sets the default, but rather
+  // cache the value before the \once \set command and restore it now
+  send_stream_event (c, "SetProperty", m->origin (),
+                    ly_symbol2scm ("symbol"), m->get_property ("symbol"),
+                    ly_symbol2scm ("value"), previous_value);
+
   return SCM_UNSPECIFIED;
 }
 
 void
 Property_iterator::do_quit ()
 {
-  if (to_boolean (get_music ()->get_property ("once")))
-    {
-      SCM trans = get_outlet ()->self_scm ();
-      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));
-    }
 }
 
 bool
index 9b85523f80ae2840ad273f8b1626891ef8f7493c..c064e5a98025ba0abae43292e27a1dda8294fc44 100644 (file)
@@ -80,7 +80,7 @@ string
 Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers)
 {
   bool is_ledgered = false;
-  if (try_ledgers && (balltype == 0 || balltype == 1))
+  if (try_ledgers && (balltype == -1 || balltype == 0 || balltype == 1))
     {
       Real rad = Staff_symbol_referencer::staff_radius (me) * 2.0;
       Real pos = Staff_symbol_referencer::get_position (me);
@@ -90,6 +90,7 @@ Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers)
        could bemore generic, but hey, we understand this even after
        dinner.
       */
+      is_ledgered |= (balltype == -1) && (pos <= -rad - 3 || pos >= +rad + 1);
       is_ledgered |= (balltype == 0) && (pos >= +rad + 2 || pos < -rad);
       is_ledgered |= (balltype == 1) && (pos <= -rad - 2 || pos > +rad);
     }
index 14c7cbeebd113007989867aa65355a4b4c15320f..4376b0133c2d47942884acb8cce9686311ff8db3 100644 (file)
@@ -196,7 +196,6 @@ Simple_spacer::expand_line ()
 Real
 Simple_spacer::compress_line ()
 {
-  double inv_hooke = 0;
   double cur_len = configuration_length (force_);
   double cur_force = force_;
   bool compressed = false;
@@ -213,23 +212,24 @@ Simple_spacer::compress_line ()
     }
 
   fits_ = true;
-  for (vsize i=0; i < springs_.size (); i++)
-    inv_hooke += compressed
-      ? springs_[i].inverse_compress_strength ()
-      : springs_[i].inverse_stretch_strength ();
 
   assert (line_len_ <= cur_len);
 
   vector<Spring> sorted_springs = springs_;
   sort (sorted_springs.begin (), sorted_springs.end (), greater<Spring> ());
 
-  for (vsize i = 0; i < sorted_springs.size (); i++)
+  /* inv_hooke is the total flexibility of currently-active springs */
+  double inv_hooke = 0;
+  vsize i = sorted_springs.size ();
+  for ( ; i && sorted_springs[i - 1].blocking_force () < cur_force; i--)
+    inv_hooke += compressed
+      ? sorted_springs[i - 1].inverse_compress_strength ()
+      : sorted_springs[i - 1].inverse_stretch_strength ();
+  /* i now indexes the first active spring, so */
+  for ( ; i < sorted_springs.size (); i++)
     {
       Spring sp = sorted_springs[i];
 
-      if (sp.blocking_force () > cur_force)
-       continue;
-
       if (isinf (sp.blocking_force ()))
        break;
 
index 1285a3bb5d2357f66f3ef61918c036c455439b1c..e83856364db6dbb3a4f2e111915d5a55f44fafdf 100644 (file)
@@ -426,7 +426,7 @@ Slur_configuration::score_edges (Slur_score_state const &state)
 }
 
 void
-Slur_configuration ::score_slopes (Slur_score_state const &state)
+Slur_configuration::score_slopes (Slur_score_state const &state)
 {
   Real dy = state.musical_dy_;
   Offset slur_dz = attachment_[RIGHT] - attachment_[LEFT];
index 2b3f5de296b666ba7eaca8dbb5971493e059a3a4..45aa121a71eebd00cf0580fbf6d33ed42febd13d 100644 (file)
@@ -48,8 +48,8 @@
 */
 class Slur_engraver : public Engraver
 {
-  Drul_array<Stream_event *> events_;
-  Stream_event *running_slur_start_;
+  vector<Stream_event *> start_events_;
+  vector<Stream_event *> stop_events_;
   vector<Grob*> slurs_;
   vector<Grob*> end_slurs_;
 
@@ -78,7 +78,6 @@ public:
 
 Slur_engraver::Slur_engraver ()
 {
-  events_[START] = events_[STOP] = 0;
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Slur_engraver, slur);
@@ -87,9 +86,9 @@ Slur_engraver::listen_slur (Stream_event *ev)
 {
   Direction d = to_dir (ev->get_property ("span-direction"));
   if (d == START)
-    ASSIGN_EVENT_ONCE (events_[START], ev);
+    start_events_.push_back(ev);
   else if (d == STOP)
-    ASSIGN_EVENT_ONCE (events_[STOP], ev);
+    stop_events_.push_back(ev);
   else ev->origin ()->warning (_f ("direction of %s invalid: %d",
                                   "slur-event", int (d)));
 }
@@ -134,7 +133,6 @@ Slur_engraver::acknowledge_tuplet_number (Grob_info info)
   acknowledge_extra_object (info);
 }
 
-
 void
 Slur_engraver::acknowledge_script (Grob_info info)
 {
@@ -157,47 +155,71 @@ Slur_engraver::acknowledge_tie (Grob_info info)
 void
 Slur_engraver::finalize ()
 {
-  if (slurs_.size ())
+  for (vsize i = 0; i < slurs_.size (); i++)
     {
-      slurs_[0]->warning (_ ("unterminated slur"));
-      for (vsize i = 0; i < slurs_.size (); i++)
-       slurs_[i]->suicide ();
+      slurs_[i]->warning (_ ("unterminated slur"));
+      slurs_[i]->suicide ();
     }
 }
 
 void
 Slur_engraver::process_music ()
 {
-  if (events_[STOP])
+  for (vsize i = 0; i < stop_events_.size (); i++)
     {
-      if (slurs_.size () == 0)
-       events_[STOP]->origin ()->warning (_ ("cannot end slur"));
-
-      
-      end_slurs_ = slurs_;
-      slurs_.clear ();
+      Stream_event *ev = stop_events_[i];
+      string id = robust_scm2string (ev->get_property ("spanner-id"), "");
+
+      // Find the slur that is ended with this event (by checking the spanner-id)
+      bool ended = false;
+      for (vsize j = slurs_.size (); j--;)
+        {
+          if (id == robust_scm2string (slurs_[j]->get_property ("spanner-id"), ""))
+            {
+              ended = true;
+              end_slurs_.push_back (slurs_[j]);
+              slurs_.erase (slurs_.begin () + j);
+            }
+        }
+      if (!ended)
+        ev->origin ()->warning (_ ("cannot end slur"));
     }
 
-  if (events_[START] && slurs_.empty ())
+  for (vsize i = start_events_.size (); i--;)
     {
-      Stream_event *ev = events_[START];
-
-      bool double_slurs = to_boolean (get_property ("doubleSlurs"));
-
-      Grob *slur = make_spanner ("Slur", events_[START]->self_scm ());
-      Direction updown = to_dir (ev->get_property ("direction"));
-      if (updown && !double_slurs)
-       set_grob_direction (slur, updown);
-
-      slurs_.push_back (slur);
-
-      if (double_slurs)
-       {
-         set_grob_direction (slur, DOWN);
-         slur = make_spanner ("Slur", events_[START]->self_scm ());
-         set_grob_direction (slur, UP);
-         slurs_.push_back (slur);
-       }
+      Stream_event *ev = start_events_[i];
+      string id = robust_scm2string (ev->get_property ("spanner-id"), "");
+      bool have_slur = false;
+      // Check if we already have a slur with the same spanner-id.
+      // In that case, don't create a new slur, but print a warning
+      for (vsize j = 0; j < slurs_.size (); j++)
+          have_slur = have_slur || (id == robust_scm2string (slurs_[j]->get_property ("spanner-id"), ""));
+      
+      if (have_slur)
+        {
+          // We already have a slur, so give a warning and completely ignore
+          // the new slur.
+          ev->origin ()->warning(_ ("already have slur"));
+          start_events_.erase (start_events_.begin () + i);
+        }
+      else 
+        {
+          Grob *slur = make_spanner ("Slur", ev->self_scm ());
+          Direction updown = to_dir (ev->get_property ("direction"));
+          slur->set_property ("spanner-id", ly_string2scm (id));
+          if (updown)
+            set_grob_direction (slur, updown);
+          slurs_.push_back (slur);
+
+          if (to_boolean (get_property ("doubleSlurs")))
+            {
+              set_grob_direction (slur, DOWN);
+              slur = make_spanner ("Slur", ev->self_scm ());
+              slur->set_property ("spanner-id", ly_string2scm (id));
+              set_grob_direction (slur, UP);
+              slurs_.push_back (slur);
+            }
+        }
     }
   set_melisma (slurs_.size ());
 }
@@ -210,7 +232,7 @@ Slur_engraver::stop_translation_timestep ()
       for (vsize i = 0; i < end_slurs_.size (); i++)
        Slur::add_extra_encompass (end_slurs_[i], g);
 
-      if (!events_[START])
+      if (!start_events_.size ())
        for (vsize i = 0; i < slurs_.size (); i++)
          Slur::add_extra_encompass (slurs_[i], g);
     }
@@ -224,7 +246,8 @@ Slur_engraver::stop_translation_timestep ()
       announce_end_grob (s, SCM_EOL);
     }
   end_slurs_.clear ();
-  events_[START] = events_[STOP] = 0;
+  start_events_.clear ();
+  stop_events_.clear ();
 }
 
 ADD_ACKNOWLEDGER (Slur_engraver, accidental);
index 9fe94ab3acbfa5a9bc1f6bcd93abcca29ed73ae8..18a7e645f524bffc80adb2a2fab35709161c927b 100644 (file)
@@ -239,13 +239,28 @@ Spanner::Spanner (Spanner const &s)
 Real
 Spanner::spanner_length () const
 {
-  Real l = spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS);
-  Real r = spanned_drul_[RIGHT]->relative_coordinate (0, X_AXIS);
+  Interval lr;
 
-  if (r < l)
+  Drul_array<SCM> bounds (get_property ("left-bound-info"),
+                          get_property ("right-bound-info"));
+
+  Direction d =  LEFT;
+  do
+    lr[d] = robust_scm2double (ly_assoc_get (ly_symbol2scm ("X"),
+                                             bounds[d], SCM_BOOL_F), -d);
+  while (flip (&d) != LEFT);
+
+  if (lr.is_empty ())
+    {
+      do
+        lr[d] = spanned_drul_[d]->relative_coordinate (0, X_AXIS);
+      while (flip (&d) != LEFT);
+    }
+
+  if (lr.is_empty ())
     programming_error ("spanner with negative length");
 
-  return r - l;
+  return lr.length ();
 }
 
 System *
@@ -532,5 +547,7 @@ ADD_INTERFACE (Spanner,
               /* properties */
               "normalized-endpoints "
               "minimum-length "
+               "spanner-broken "
+               "spanner-id "
               "to-barline "
               );
index 60bc0aec77ca736084ed1afd18430b6a4bc0d9ea..c576da374329bf22b196982c3276343587b56fbb 100644 (file)
@@ -45,20 +45,23 @@ Spring::Spring (Real dist, Real min_dist)
 void
 Spring::update_blocking_force ()
 {
+  // blocking_force_ is the value of force
+  //   below which length(force) is constant, and
+  //   above which length(force) varies according to inverse_*_strength.
+  // Simple_spacer::compress_line() depends on the condition above.
+  // We assume inverse_*_strength are non-negative.
   if (min_distance_ > distance_)
-    blocking_force_ = (min_distance_ - distance_) / inverse_stretch_strength_;
+    if (inverse_stretch_strength_ > 0.0)
+      blocking_force_ = (min_distance_ - distance_) / inverse_stretch_strength_;
+    else
+      // Conceptually, this should be +inf, but 0.0 meets the requirements
+      //  of Simple_spacer and creates fewer cases of 0.0*inf to handle.
+      blocking_force_ = 0.0;
   else
-    blocking_force_ = (min_distance_ - distance_) / inverse_compress_strength_;
-
-  // If the spring is fixed, it's not clear what the natural value
-  // of blocking_force_ would be (because it always blocks).
-  // -infinity_f works fine for now.
-  // If inverse_stretch_strength > 0, the spring is not fixed (because it can stretch).
-  if (isnan (blocking_force_) || blocking_force_ == infinity_f)
-    blocking_force_ = (inverse_stretch_strength_ > 0) ? 0.0 : -infinity_f;
-
-  if (blocking_force_ >= 0)
-    inverse_compress_strength_ = 0;
+    if (inverse_compress_strength_ > 0.0)
+      blocking_force_ = (min_distance_ - distance_) / inverse_compress_strength_;
+    else
+      blocking_force_ = 0.0;
 }
 
 /* scale a spring, but in a way that doesn't violate min_distance */
@@ -200,7 +203,7 @@ Spring::length (Real f) const
   Real force = max (f, blocking_force_);
   Real inv_k = force < 0.0 ? inverse_compress_strength_ : inverse_stretch_strength_;
 
-  if (force == infinity_f)
+  if (isinf(force))
     {
       programming_error ("cruelty to springs");
       force = 0.0;
index bab8ae025748282b47bb2f49b4035d737f2baedf..6d621a79a3319a1e7526450bcfadf75046ad5f5f 100644 (file)
@@ -61,12 +61,18 @@ private:
   map<string, Audio_staff*> staff_map_;
   map<string, int> channel_map_;
   map<string, Audio_dynamic*> dynamic_map_;
+  // Would prefer to have the following two items be
+  // members of the containing class Performance,
+  // so they can be reset for each new midi file output.
   static map<string, int> static_channel_map_;
   static int channel_count_;
+  // For now, ask the last Staff_performer clean up during its finalize method
+  static int staff_performer_count_;
 };
 
 map<string, int> Staff_performer::static_channel_map_;
 int Staff_performer::channel_count_ = 0;
+int Staff_performer::staff_performer_count_ = 0;
 
 #include "translator.icc"
 
@@ -99,6 +105,7 @@ Staff_performer::~Staff_performer ()
 void
 Staff_performer::initialize ()
 {
+   ++staff_performer_count_;
 }
 
 Audio_staff*
@@ -192,6 +199,13 @@ Staff_performer::finalize ()
 {
   staff_map_.clear ();
   channel_map_.clear ();
+  if (staff_performer_count_)
+    --staff_performer_count_;
+  if (0 == staff_performer_count_)
+    {
+      static_channel_map_.clear ();
+      channel_count_ = 0;
+    }
 }
 
 string
index e21d796765ccd1cc1de4daf188b18be068e82d48..fb545911478bab563907bd80b307cd30811bd02f 100644 (file)
@@ -135,8 +135,22 @@ Stem_engraver::acknowledge_rhythmic_head (Grob_info gi)
     make_stem (gi);
 
   int ds = Stem::duration_log (stem_);
-
-  if (ds != d->duration_log ())
+  int dc = d->duration_log ();
+
+  // half notes and quarter notes all have compatible stems.
+  // Longas are done differently (oops?), so we can't unify
+  // them with the other stemmed notes.
+  if (ds == 1)
+    ds = 2;
+  if (dc == 1)
+    dc = 2;
+  // whole notes and brevis both have no stems
+  if (ds == -1)
+    ds = 0;
+  if (dc == -1)
+    dc = 0;
+
+  if (ds != dc) 
     {
       gi.event_cause ()->origin ()->warning (_f ("adding note head to incompatible stem (type = %d/%d)",
                                                 ds < 0 ? 1 << -ds : 1,
index 4d1678889a63ee382a4a207bf5d31fd2424194f2..5a115835ef55cc8561dfda677b5ef0b7f2c060a0 100644 (file)
@@ -146,16 +146,16 @@ Stem_tremolo::raw_stencil (Grob *me, Real slope, Direction stemdir)
 
 
 
-MAKE_SCHEME_CALLBACK (Stem_tremolo, height, 1);
+MAKE_SCHEME_CALLBACK (Stem_tremolo, pure_height, 3);
 SCM
-Stem_tremolo::height (SCM smob)
+Stem_tremolo::pure_height (SCM smob, SCM, SCM)
 {
   Grob *me = unsmob_grob (smob);
 
   /*
     Cannot use the real slope, since it looks at the Beam.
    */
-  Stencil s1 (translated_stencil (me, 0.35));
+  Stencil s1 (untranslated_stencil (me, 0.35));
 
   return ly_interval2scm (s1.extent (Y_AXIS));
 }
index 04bc4105922e0ecfbca2ea41da058b007ff25fe7..5b1a3d5041423e488e9cdc40eba25f4f7bf7a34a 100644 (file)
@@ -733,6 +733,32 @@ Stem::thickness (Grob *me)
     * Staff_symbol_referencer::line_thickness (me);
 }
 
+MAKE_SCHEME_CALLBACK (Stem, calc_stem_begin_position, 1);
+SCM
+Stem::calc_stem_begin_position (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Direction d = get_grob_direction (me);
+  Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
+  Grob *lh
+    = to_boolean (me->get_property ("avoid-note-head"))
+    ? last_head (me)
+    : first_head (me);
+
+  Real pos = Staff_symbol_referencer::get_position (lh);
+
+  if (Grob *head = support_head (me))
+    {
+      Interval head_height = head->extent (head, Y_AXIS);
+      Real y_attach = Note_head::stem_attachment_coordinate (head, Y_AXIS);
+
+      y_attach = head_height.linear_combination (y_attach);
+      pos += d * y_attach / half_space;
+    }
+
+  return scm_from_double (pos);
+}
+
 MAKE_SCHEME_CALLBACK (Stem, print, 1);
 SCM
 Stem::print (SCM smob)
@@ -771,7 +797,7 @@ Stem::print (SCM smob)
   Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
 
   if (lh)
-    y2 = Staff_symbol_referencer::get_position (lh);
+    y2 = robust_scm2double (me->get_property ("stem-begin-position"), 0.0);
   else if (stemlet)
     {
       Real beam_translation = Beam::get_beam_translation (beam);
@@ -786,18 +812,6 @@ Stem::print (SCM smob)
 
   Interval stem_y (min (y1, y2), max (y2, y1));
 
-  if (Grob *head = support_head (me))
-    {
-      /*
-       must not take ledgers into account.
-      */
-      Interval head_height = head->extent (head, Y_AXIS);
-      Real y_attach = Note_head::stem_attachment_coordinate (head, Y_AXIS);
-
-      y_attach = head_height.linear_combination (y_attach);
-      stem_y[Direction (-d)] += d * y_attach / half_space;
-    }
-
   // URG
   Real stem_width = thickness (me);
   Real blot
@@ -1110,6 +1124,7 @@ ADD_INTERFACE (Stem,
               "note-heads "
               "positioning-done "
               "rests "
+              "stem-begin-position "
               "stem-end-position "
               "stem-info "
               "stemlet-length "
index 3f671e3316135f60c593753eab550e545cb1395f..25da0494395a5c158bab33a1f5860e51c6bb5c15 100644 (file)
@@ -100,6 +100,7 @@ System_start_delimiter::print (SCM smob)
   Grob *common = common_refpoint_of_array (elts, me, Y_AXIS);
 
   Interval ext;
+  Real staffspace = 1.0;
   int non_empty_count = 0;
   for (vsize i = elts.size (); i--;)
     {
@@ -113,14 +114,17 @@ System_start_delimiter::print (SCM smob)
            {
              non_empty_count ++;
              ext.unite (dims);
+              staffspace = Staff_symbol_referencer::staff_space (sp);
            }
        }
     }
 
   SCM glyph_sym = me->get_property ("style");
   Real len = ext.length ();
+
+  // Use collapse-height in multiples of the staff-space
   if (ext.is_empty ()
-      || (robust_scm2double (me->get_property ("collapse-height"), 0.0) >= ext.length ()))
+      || (robust_scm2double (me->get_property ("collapse-height"), 0.0) >= (len / staffspace)))
     {
       me->suicide ();
       return SCM_UNSPECIFIED;
index 1cd582de7525bc2d628b24cb062ddfc188ac7904..d151911ea5361fbe5ede643979be1343bfed1078 100644 (file)
@@ -311,31 +311,16 @@ System::get_footnotes_in_range (vsize start, vsize end)
   return out;
 }
 
-Stencil
-System::make_footnote_stencil (Real padding)
+vsize
+System::num_footnotes ()
 {
-  Stencil mol;
-
-  for (vsize i = 0; i < footnote_grobs_.size (); i++)
-    {
-      SCM footnote_markup = footnote_grobs_[i]->get_property ("footnote-text");
-      if (Spanner *orig = dynamic_cast<Spanner *>(footnote_grobs_[i]))
-        if (orig->is_broken ())
-          footnote_markup = orig->broken_intos_[0]->get_property ("footnote-text");
-
-      if (!Text_interface::is_markup (footnote_markup))
-        continue;
-
-      SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"),
-                              pscore_->layout ()->self_scm ());
-
-      SCM footnote_stl = Text_interface::interpret_markup (pscore_->layout ()->self_scm (),
-                                                           props, footnote_markup);
-
-      mol.add_at_edge (Y_AXIS, DOWN, *unsmob_stencil (footnote_stl), padding);
-    }
+  return footnote_grobs_.size ();
+}
 
-  return mol;
+vector<Grob *>*
+System::footnote_grobs ()
+{
+  return &footnote_grobs_;
 }
 
 void
index b9c7b75fb94589b62f3d5bf9b421fdb0de19d2cf..c18bf098f2e03855dbfa4096b9d29331805abd96 100644 (file)
@@ -52,8 +52,7 @@ Text_spanner_engraver::Text_spanner_engraver ()
   finished_ = 0;
   current_event_ = 0;
   span_ = 0;
-  event_drul_[START] = 0;
-  event_drul_[STOP] = 0;
+  event_drul_.set (0, 0);
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Text_spanner_engraver, text_span);
@@ -119,8 +118,7 @@ Text_spanner_engraver::stop_translation_timestep ()
     }
 
   typeset_all ();
-  event_drul_[START] = 0;
-  event_drul_[STOP] = 0;
+  event_drul_.set (0, 0);
 }
 
 void
@@ -135,20 +133,25 @@ Text_spanner_engraver::finalize ()
     }
 }
 
-
 void
 Text_spanner_engraver::acknowledge_note_column (Grob_info info)
 {
-  if (span_) {
-    Pointer_group_interface::add_grob (span_,
-                                      ly_symbol2scm ("note-columns"),
-                                      info.grob());
-    add_bound_item (span_, info.grob ());
-  } else if (finished_) {
-    Pointer_group_interface::add_grob (finished_, ly_symbol2scm ("note-columns"),
-                                      info.grob());
-    add_bound_item (finished_, info.grob ());
-  }
+  if (span_)
+    {
+      Pointer_group_interface::add_grob (span_,
+                                        ly_symbol2scm ("note-columns"),
+                                        info.grob ());
+      if (!span_->get_bound (LEFT))
+       add_bound_item (span_, info.grob ());
+    }
+  else if (finished_)
+    {
+      Pointer_group_interface::add_grob (finished_,
+                                        ly_symbol2scm ("note-columns"),
+                                        info.grob ());
+      if (!finished_->get_bound (RIGHT))
+       add_bound_item (finished_, info.grob ());
+    }
 }
 
 ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column);
@@ -161,7 +164,7 @@ ADD_TRANSLATOR (Text_spanner_engraver,
                "TextSpanner ",
 
                /* read */
-               "",
+               "currentMusicalColumn ",
 
                /* write */
                ""
index b13e68050c97f0d2a162a27d6650837f0fd6b6cf..edaba06c7c0720e1dcc35321acf9010cee298226 100644 (file)
@@ -82,6 +82,7 @@ protected:
   void process_music ();
   void typeset_tie (Grob *);
   void report_unterminated_tie (Head_event_tuple const &);
+  bool has_autosplit_end (Stream_event *event);
 public:
   TRANSLATOR_DECLARATIONS (Tie_engraver);
 };
@@ -116,6 +117,18 @@ void Tie_engraver::report_unterminated_tie (Head_event_tuple const &tie_start)
     tie_start.head_->warning (_("unterminated tie"));
 }
 
+/*
+  Determines whether the end of an event was created by
+  a split in Completion_heads_engraver or by user input.
+*/
+bool
+Tie_engraver::has_autosplit_end (Stream_event *event)
+{
+  if (event)
+    return to_boolean (event->get_property ("autosplit-end"));
+  return false;
+}
+
 void
 Tie_engraver::process_music ()
 {
@@ -146,8 +159,12 @@ Tie_engraver::acknowledge_note_head (Grob_info i)
       if (!right_ev || !left_ev)
        continue;
 
-      if (ly_is_equal (right_ev->get_property ("pitch"),
-                      left_ev->get_property ("pitch")))
+      /*
+        Make a tie only if pitches are equal or if event end was not generated by
+        Completion_heads_engraver.
+      */
+      if (ly_is_equal (right_ev->get_property ("pitch"), left_ev->get_property ("pitch"))
+         && (!Tie_engraver::has_autosplit_end (left_ev)))
        {
          Grob *p = new Spanner (heads_to_tie_[i].tie_definition_);
          Moment end = heads_to_tie_[i].end_moment_;
@@ -170,10 +187,12 @@ Tie_engraver::acknowledge_note_head (Grob_info i)
          ties_.push_back (p);
          heads_to_tie_.erase (heads_to_tie_.begin () + i);
 
-         // Prevent all other tied notes ending at the same moment (assume
-         // implicitly the notes have also started at the same moment!)
-         // from triggering an "unterminated tie" warning. Needed e.g. for
-         // <c e g>~ g
+         /*
+           Prevent all other tied notes ending at the same moment (assume
+           implicitly the notes have also started at the same moment!)
+           from triggering an "unterminated tie" warning. Needed e.g. for
+           <c e g>~ g
+         */
          for (vsize j = heads_to_tie_.size (); j--;)
            {
              if (heads_to_tie_[j].end_moment_ == end)
@@ -233,6 +252,12 @@ Tie_engraver::stop_translation_timestep ()
 
   vector<Head_event_tuple> new_heads_to_tie;
 
+  /*
+    Whether tie event has been processed and can be deleted or should
+    be kept for later portions of a split note.
+  */
+  bool event_processed = false;
+
   for (vsize i = 0; i < now_heads_.size (); i++)
     {
       Grob *head = now_heads_[i];
@@ -245,6 +270,9 @@ Tie_engraver::stop_translation_timestep ()
          continue;
        }
 
+      // We only want real notes to cause ties, not e.g. pitched trills
+      if (!left_ev->in_event_class ("note-event"))
+          continue;
 
       SCM left_articulations = left_ev->get_property ("articulations");
 
@@ -262,8 +290,11 @@ Tie_engraver::stop_translation_timestep ()
            tie_event = ev;
        }
 
-      if (left_ev && (tie_event || tie_stream_event))
+      if (left_ev && (tie_event || tie_stream_event)
+         && (!Tie_engraver::has_autosplit_end (left_ev)))
        {
+         event_processed = true;
+
          Head_event_tuple event_tup;
 
          SCM start_definition
@@ -301,7 +332,13 @@ Tie_engraver::stop_translation_timestep ()
   for (vsize i = 0; i < new_heads_to_tie.size (); i++)
     heads_to_tie_.push_back (new_heads_to_tie[i]);
 
-  event_ = 0;
+  /*
+    Discard event only if it has been processed with at least one
+    appropriate note.
+  */
+  if (event_processed)
+    event_ = 0;
+
   now_heads_.clear ();
 }
 
index 3bf2d1b49e8487815b79d1ec8af0b89a526803b2..a7e1c6c2ba3cd78193352f465a439d1eadda9e06 100644 (file)
@@ -730,12 +730,37 @@ Tuplet_bracket::get_default_dir (Grob *me)
   for (vsize i = 0; i < columns.size (); i++)
     {
       Grob *nc = columns[i];
+      if (Note_column::has_rests (nc))
+        continue;
       Direction d = Note_column::dir (nc);
       if (d)
        dirs[d]++;
     }
 
-  return dirs[UP] >= dirs[DOWN] ? UP : DOWN;
+  if (dirs[UP] == dirs[DOWN])
+    {
+      if (dirs[UP] == 0)
+        return UP;
+      Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
+      if (!staff)
+        return UP;
+      Interval staff_extent = staff->extent (staff, Y_AXIS);
+      Interval extremal_positions;
+      extremal_positions.set_empty ();
+      for (vsize i = 0; i < columns.size (); i++)
+        {
+          Direction d = Note_column::dir (columns[i]);
+          extremal_positions[d] = minmax (d, 1.0*Note_column::head_positions_interval (columns[i])[d], extremal_positions[d]);
+        }
+      Direction d = LEFT;
+      do
+        extremal_positions[d] = -d * (staff_extent[d] - extremal_positions[d]);
+      while (flip (&d) != LEFT);
+
+      return extremal_positions[UP] <= extremal_positions[DOWN] ? UP : DOWN;
+    }
+
+  return dirs[UP] > dirs[DOWN] ? UP : DOWN;
 }
 
 void
index 39c120dd751be00ac4b640a45ae960c165d1ff66..3829c98283632ed0f4583e68c99a4e577bdd23b3 100644 (file)
@@ -182,6 +182,8 @@ Tuplet_engraver::process_music ()
       tuplets_[i].number_ = make_spanner ("TupletNumber",
                                          tuplets_[i].event_->self_scm ());
       tuplets_[i].number_->set_object ("bracket", tuplets_[i].bracket_->self_scm ());
+      tuplets_[i].number_->set_parent (tuplets_[i].bracket_, X_AXIS);
+      tuplets_[i].number_->set_parent (tuplets_[i].bracket_, Y_AXIS);
       tuplets_[i].bracket_->set_object ("tuplet-number", tuplets_[i].number_->self_scm ());
       tuplets_[i].stop_moment_.grace_part_ = 0;
       
index ceff2511674011b0c4c75626a72d7600514f4a71..8a4499e2c3c62e4efbe60265d4a1160fb5f91c89 100644 (file)
@@ -82,5 +82,6 @@ ADD_INTERFACE (Tuplet_number,
               /* properties */
               "avoid-slur "    // UGH.
               "bracket "
+              "direction "
               );
 
index df3a3d4ec4050e94f8f5c3dbf595ea08f734bb9c..5402a8fb01da24f005a09caafe2c2b054f6bc42e 100644 (file)
@@ -102,7 +102,7 @@ Vaticana_ligature_engraver::listen_ligature (Stream_event *ev)
 
 Vaticana_ligature_engraver::Vaticana_ligature_engraver ()
 {
-  brew_ligature_primitive_proc = 
+  brew_ligature_primitive_proc =
     Vaticana_ligature::brew_ligature_primitive_proc;
   augmented_primitives_.clear ();
 }
@@ -742,7 +742,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
 }
 
 ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, note_head);
+ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, ligature_head);
 ADD_TRANSLATOR (Vaticana_ligature_engraver,
                /* doc */
                "Handle ligatures by glueing special ligature heads"
diff --git a/ly/context-mods-init.ly b/ly/context-mods-init.ly
new file mode 100644 (file)
index 0000000..be3ade7
--- /dev/null
@@ -0,0 +1,31 @@
+%%%% This file is part of LilyPond, the GNU music typesetter.
+%%%%
+%%%% Copyright (C) 2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%%                    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/>.
+
+\version "2.15.6"
+
+RemoveEmptyStaves = \with {
+  \remove "Axis_group_engraver"
+  % If RemoveEmptyStaves is called twice, two
+  % Hara_kiri_engravers would be added, which leads to a
+  % warning.
+  % This code makes sure that no previous Hara_kiri_engraver
+  % is left before adding a new one.
+  \remove "Hara_kiri_engraver"
+  \consists "Hara_kiri_engraver"
+  \override VerticalAxisGroup #'remove-empty = ##t
+}
index 268ecaee7eff6de6d34472ced100bbdebb3f3008..8907b789ad674b676cf7af1096bcf9ebf0d2e157 100644 (file)
@@ -122,31 +122,29 @@ repeatTie = #(make-music 'RepeatTieEvent)
 \include "grace-init.ly"
 \include "midi-init.ly"
 \include "paper-defaults-init.ly"
+\include "context-mods-init.ly"
 
 \layout {
-    mm = #(ly:output-def-lookup $defaultpaper 'mm)
-    unit = #(ly:output-def-lookup $defaultpaper 'unit)
+  mm = #(ly:output-def-lookup $defaultpaper 'mm)
+  unit = #(ly:output-def-lookup $defaultpaper 'unit)
 
-    in = #(* 25.4 mm)
-    pt = #(/  in 72.27)
-    cm = #(* 10 mm)
+  in = #(* 25.4 mm)
+  pt = #(/ in 72.27)
+  cm = #(* 10 mm)
 
-    \include "engraver-init.ly"
+  \include "engraver-init.ly"
 
-    #(set-paper-dimension-variables (current-module))
+  #(set-paper-dimension-variables (current-module))
 }
 
 #(set-default-paper-size (ly:get-option 'paper-size))
 partCombineListener = \layout {
-    \context {
-       \Score
-       skipTypesetting = ##t
-       ignoreBarChecks = ##t
-       \alias "Timing"
-    }
+  \context {
+    \Score
+    skipTypesetting = ##t
+    ignoreBarChecks = ##t
+    \alias "Timing"
+  }
 }
 
 setDefaultDurationToQuarter = { c4 }
-
-
-
index d28b8be51b947e1c1391fd37ee7b774be47b8c2c..badb701e08579e8aa7bb4f70ec8b027eaaae0380 100644 (file)
@@ -498,20 +498,6 @@ printing of a single line of lyrics."
   \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
 }
 
-
-RemoveEmptyStaves = \with {
-  \remove "Axis_group_engraver"
-    % If RemoveEmptyStaves is called twice, two
-    % Hara_kiri_engravers would be added, which leads to a
-    % warning.
-    % This code makes sure that no previous Hara_kiri_engraver
-    % is left before adding a new one.
-  \remove "Hara_kiri_engraver"
-  \consists "Hara_kiri_engraver"
-  \override VerticalAxisGroup #'remove-empty = ##t
-}
-
-
 \context {
   \type "Score_engraver"
   \name "Score"
@@ -1052,7 +1038,6 @@ accommodated for typesetting a piece in mensural style."
   printKeyCancellation = ##f
 }
 
-
 %% Keep the old definitions in here for compatibility (they erase previous
 %% settings to the corresponding context!).
 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
index 538d74dc5fac38d0e0c9e3735d4fd84189c5e962..f8d547ef7cbeb2106a5d014d465d80eec4314bab 100644 (file)
@@ -60,28 +60,25 @@ name, it uses "unnamed-staff" for that part of the filename."
     (/ (ly:moment-main-numerator moment)
        (ly:moment-main-denominator moment))))
 
-#(define (adjust-for-grace moment)
-   "Adjusts any moment with a grace note by subtracting half of
-the grace note duration.  For example, an eighth note grace note
-which would otherwise occur at score time 0.5 will now occur at
-score time 0.375."
+#(define (moment-grace->string moment)
+   "Prints a moment without grace note(s) as a float such as
+0.25000.  Grace notes are written with the grace duration as a
+separate \"dashed\" number, i.e. 0.25000-0.12500.  This allows any
+program using the output of this function to interpret grace notes
+however they want (half duration, quarter duration?  before beat,
+after beat?  etc.)."
    (if
        (eq? 0 (ly:moment-grace-numerator moment))
-       moment
-       ;; get moment including grace note
-       ;; grace notes have a negative numerator, so add
-       (ly:moment-add moment
-                      ;; make the "grace duration" half as long
-                      (ly:moment-mul
-                       (ly:make-moment 1 2)
+       (ly:format "~a" (format-moment moment))
+       ;; grace notes have a negative numerator, so no "-" necessary
+       (ly:format
+         "~a~a"
+         (format-moment moment)
+         (format-moment
                        (ly:make-moment
                         (ly:moment-grace-numerator moment)
                         (ly:moment-grace-denominator moment))))))
 
-#(define (get-moment moment)
-   (format-moment (adjust-for-grace
-                   moment)))
-
 #(define (make-output-string-line engraver values)
    "Constructs a tab-separated string beginning with the
 score time (derived from the engraver) and then adding all the
@@ -90,12 +87,12 @@ values.  The string ends with a newline."
           (moment (ly:context-current-moment context)))
     (string-append
      (string-join
-      (map
-       (lambda (x) (ly:format "~a" x))
-        (append
-         (list (get-moment moment))
-          values))
-        "\t")
+       (append
+         (list (moment-grace->string moment))
+         (map
+             (lambda (x) (ly:format "~a" x))
+             values))
+       "\t")
      "\n")))
 
 
@@ -119,7 +116,9 @@ optionally outputs to the console as well."
    (print-line engraver
                "rest"
                (ly:duration->string
-                (ly:event-property event 'duration))))
+                (ly:event-property event 'duration))
+               (format-moment (ly:duration-length
+                               (ly:event-property event 'duration)))))
 
 #(define (format-note engraver event)
    (let* ((origin (ly:input-file-line-char-column
@@ -129,6 +128,8 @@ optionally outputs to the console as well."
                  ;; get a MIDI pitch value.
                  (+ 60 (ly:pitch-semitones
                         (ly:event-property event 'pitch)))
+                 (ly:duration->string
+                  (ly:event-property event 'duration))
                  (format-moment (ly:duration-length
                                  (ly:event-property event 'duration)))
                  ;; point and click info
@@ -150,6 +151,10 @@ optionally outputs to the console as well."
    (print-line engraver
                "breathe"))
 
+#(define (format-tie engraver event)
+   (print-line engraver
+               "tie"))
+
 #(define (format-articulation engraver event)
    (print-line engraver
                "script"
@@ -214,6 +219,7 @@ optionally outputs to the console as well."
                      (cons 'crescendo-event format-cresc)
                      (cons 'decrescendo-event format-decresc)
                      (cons 'text-span-event format-textspan)
+                     (cons 'tie-event format-tie)
                      )))
   }
 }
index cbe88d67c847b1acb51cefe7006e3bb349f51fa4..1c60b019cfe3580765ca095ceb3b975260e9ce3b 100644 (file)
 \version "2.14.0"
 
 #(use-modules (scm song))
+#(use-modules (srfi srfi-39))
 
 % \festival #"filename" { \tempo N = X } { music }
 festival =
-#(define-music-function (parser location filename tempo music) (string? ly:music? ly:music?)
-  (output-file music tempo filename)
-  music)
+#(define-music-function (parser location filename tempo music)
+   (string? ly:music? ly:music?)
+   (output-file music tempo filename)
+   music)
 
 % \festivalsyl #"filename" { \tempo N = X } { music }
 festivalsyl =
-#(define-music-function (parser location filename tempo music) (string? ly:music? ly:music?)
-  (set! *syllabify* #t)
-  (output-file music tempo filename)
-  music)
+#(define-music-function (parser location filename tempo music)
+   (string? ly:music? ly:music?)
+   (parameterize ((*syllabify* #t))
+     (output-file music tempo filename))
+   music)
index 1f8edca81e3344be7ced10728a505b6a0328700a..6850541afaeb1c8bb209c42208f0a68b1955ffdd 100644 (file)
@@ -1,5 +1,8 @@
 \version "2.14.0"
 
+startGraceSlur = #(make-music 'SlurEvent 'span-direction START 'spanner-id "grace")
+stopGraceSlur = #(make-music 'SlurEvent 'span-direction STOP 'spanner-id "grace")
+
 
 startGraceMusic =  {
 }
@@ -9,19 +12,27 @@ stopGraceMusic =  {
 
 startAppoggiaturaMusic =
  {
-    s1*0(
+    s1*0\startGraceSlur
 }
 
 stopAppoggiaturaMusic =  { 
-    s1*0)
+    s1*0\stopGraceSlur
 }
 
 startAcciaccaturaMusic =  {
-    s1*0(
+    s1*0\startGraceSlur
     \override Stem  #'stroke-style = #"grace"
 }
 
 stopAcciaccaturaMusic =  {
     \revert Stem #'stroke-style
-    s1*0)
+    s1*0\stopGraceSlur
+}
+
+startSlashedGraceMusic =  {
+  \override Stem  #'stroke-style = #"grace"
+}
+
+stopSlashedGraceMusic =  {
+  \revert Stem #'stroke-style
 }
index 2670858ffb03b8426a869d4efe2e978488913551..df797e4c0a179cdcc4ab958934476ba479197e08 100644 (file)
    (set! last-grob-action (assv-set! last-grob-action grob node-id))))
 
 #(define (truncate-value val)
-  (let ((val-str (format "~a" val)))
+  (let ((val-str (format #f "~a" val)))
    (string-take val-str (min 50 (string-length val-str)))))
 
 #(define (grob-mod grob file line func prop val)
   (let* ((val-str (truncate-value val))
-        (label (format "~a\\n~a:~a\\n~a <- ~a" (grob-name grob) file line prop val-str)))
+        (label (format #f "~a\\n~a:~a\\n~a <- ~a" (grob-name grob) file line prop val-str)))
    (if (relevant? grob file line prop)
        (grob-event-node grob label file))))
 
 #(define (grob-cache grob prop callback value)
   (let* ((val-str (truncate-value value))
-        (label (format "caching ~a.~a\\n~a -> ~a" (grob-name grob) prop callback value)))
+        (label (format #f "caching ~a.~a\\n~a -> ~a" (grob-name grob) prop callback value)))
    (if (relevant? grob #f #f prop)
        (grob-event-node grob label #f))))
 
 #(define (grob-create grob file line func)
-  (let ((label (format "~a\\n~a:~a" (grob-name grob) file line)))
+  (let ((label (format #f "~a\\n~a:~a" (grob-name grob) file line)))
    (grob-event-node grob label file)))
 
 #(ly:set-grob-modification-callback grob-mod)
index c27d8c840948e91ae399cb8be700b2b62a784602..380d9d2a0b2944265d07a773ef365205dee7d1d9 100644 (file)
@@ -25,7 +25,7 @@
 
 #(if (ly:get-option 'include-settings)
   (ly:parser-include-string parser
-    (format "\\include \"~a\"" (ly:get-option 'include-settings))))
+    (format #f "\\include \"~a\"" (ly:get-option 'include-settings))))
 
 \maininput
 %% there is a problem at the end of the input file
index b627c43a9779161555389e4e458cee24a32c229b..3535a0a6a7b0dc5a03188dca78078e178ede3f16 100644 (file)
@@ -344,7 +344,7 @@ footnoteGrob =
 #(define-music-function (parser location grob-name offset text footnote)
    (symbol? number-pair? markup? markup?)
    (_i "Attach @var{text} to @var{grob-name} at offset @var{offset},
- with @var{text} referring to @var{footnote} (use like @code{\\once})")
+with @var{text} referring to @var{footnote} (use like @code{\\once})")
    (make-music 'FootnoteEvent
               'symbol grob-name
               'X-offset (car offset)
@@ -352,17 +352,46 @@ footnoteGrob =
               'text text
               'footnote-text footnote))
 
+autoFootnoteGrob =
+#(define-music-function (parser location grob-name offset footnote)
+   (symbol? number-pair? markup?)
+   (_i "Footnote @var{grob-name} with the text in @var{footnote}
+allowing for the footnote to be automatically numbered such that
+the number appears at @var{offset}.  Note that, for this to take effect,
+auto-numbering must be turned on in the paper block.  Otherwise, no
+number will appear.  Use like @code{\\once})")
+   #{
+     \footnoteGrob $grob-name $offset \markup { "" } $footnote
+   #})
+
 footnote =
 #(define-music-function (parser location offset text footnote)
    (number-pair? markup? markup?)
    (_i "Attach @var{text} at @var{offset} with @var{text} referring
- to @var{footnote} (use like @code{\\tweak})")
+to @var{footnote} (use like @code{\\tweak})")
    (make-music 'FootnoteEvent
               'X-offset (car offset)
               'Y-offset (cdr offset)
               'text text
               'footnote-text footnote))
 
+% this function can't be a simple copy and past of the above because
+% it needs to be encapsulated in a Sequential Music.
+% so, there's a code dup of above :-(
+autoFootnote =
+#(define-music-function (parser location offset footnote)
+   (number-pair? markup?)
+   (_i "Footnote the item after which this comes with the text in
+@var{footnote} allowing for the footnote to be automatically numbered
+such that the number appears at @var{offset}.  Note that, for this to
+take effect, auto-numbering must be turned on in the paper block.
+Otherwise, no number will appear.  Use like @code{\\tweak})")
+   (make-music 'FootnoteEvent
+              'X-offset (car offset)
+              'Y-offset (cdr offset)
+              'text (markup "")
+              'footnote-text footnote))
+
 grace =
 #(def-grace-function startGraceMusic stopGraceMusic
    (_i "Insert @var{music} as grace notes."))
@@ -868,6 +897,11 @@ shiftDurations =
     (lambda (x)
       (shift-one-duration-log x dur dots)) arg))
 
+slashedGrace =
+#(def-grace-function startSlashedGraceMusic stopSlashedGraceMusic
+   (_i "Create slashed graces (slashes through stems, but no slur) from
+the following music expression"))
+
 spacingTweaks =
 #(define-music-function (parser location parameters) (list?)
    (_i "Set the system stretch, by reading the 'system-stretch property of
index 145fe9a52ec953bc84b45bfc4fb42f7875dd5c42..c68652d8a403778c1c490e4a13672dd90de60190 100644 (file)
   %%
   %% Footnotes
   %%
-  footnote-separator-markup = \markup { \fill-line \override #`(span-factor . 1/2) { \draw-hline } }
+  footnote-separator-markup = \markup \fill-line { \override #'(span-factor . 1/2) \draw-hline }
   footnote-padding = 0.5\mm
   footnote-footer-padding = 0.5\mm
+  footnote-number-raise = 0.5\mm
+  footnote-auto-numbering = ##t
+  footnote-numbering-function = #numbered-footnotes
+  reset-footnotes-on-new-page = ##t
 
   %%
   %% Page numbering
index 698cc6eadb80ba5ac408b95e09e0370b22ec652c..241b3cd56c8ff4b260915a50ef380df67fd4ad81 100644 (file)
                         #"x;x;4-3;3-2;4-4;1-1;"
 \storePredefinedDiagram #default-fret-table \chordmode {ees:aug}
                         #guitar-tuning
-                        #"3-3;2-2;1-1;o;o;3-4"
+                        #"3-3;2-2;1-1;o;o;3-4;"
 \storePredefinedDiagram #default-fret-table \chordmode {ees:dim}
                         #guitar-tuning
                         #(offset-fret 1 (chord-shape 'd:dim guitar-tuning))
index 73fd17fe598106a3953cc0146b73ccce90bd223d..679742f29190cf87a086b6cadd404e902e393551 100644 (file)
@@ -16,7 +16,7 @@ tagline = \markup {
     %% 2014 = em dash.
 
     #(ly:export
-      (format "Music engraving by LilyPond ~a~awww.lilypond.org"
+      (format #f "Music engraving by LilyPond ~a~awww.lilypond.org"
        (lilypond-version)
        (ly:wide-char->utf-8 #x2014)
        ))
index c47b2697d359dcc63e775d5af6802887a82dcbd4..1fa0a73790cc0f27f7ca178b018035168195458a 100644 (file)
@@ -17,6 +17,7 @@ FETA_MF_FILES = $(call src-wildcard,feta[0-9]*.mf) \
                $(call src-wildcard,feta-braces-[a-z].mf) \
                $(call src-wildcard,feta-alphabet*[0-9].mf) \
                $(call src-wildcard,feta-notehead*[0-9].mf) \
+               $(call src-wildcard,feta-flags*[0-9].mf) \
                $(call src-wildcard,parmesan[0-9]*.mf)
 
 STAFF_SIZES = 11 13 14 16 18 20 23 26
@@ -65,6 +66,7 @@ $(outdir)/emmentaler-%.otf\
  $(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.pe \
                            $(outdir)/feta%.pfb \
                            $(outdir)/feta-noteheads%.pfb \
+                           $(outdir)/feta-flags%.pfb \
                            $(outdir)/feta-alphabet%.pfb \
                            $(outdir)/parmesan%.pfb \
                            $(outdir)/feta%.otf-table \
@@ -83,40 +85,49 @@ $(outdir)/%.pfb: $(outdir)/%.log
 $(outdir)/%.otf-table: $(outdir)/%.lisp
        cat $< $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \
               $(if $(findstring brace,$<),,$(subst feta,feta-noteheads,$<)) \
+              $(if $(findstring brace,$<),,$(subst feta,feta-flags,$<)) \
               $(if $(findstring brace,$<),,$(subst feta,feta-alphabet,$<)) > $@
 
 
 ## ugh -- we want this to prevent failing -j2 compiles.
 $(outdir)/feta26.otf-table: $(outdir)/feta26.lisp \
                            $(outdir)/feta-noteheads26.lisp \
+                           $(outdir)/feta-flags26.lisp \
                            $(outdir)/parmesan26.lisp \
                            $(outdir)/feta-alphabet26.lisp
 $(outdir)/feta23.otf-table: $(outdir)/feta23.lisp \
                            $(outdir)/feta-noteheads23.lisp \
+                           $(outdir)/feta-flags23.lisp \
                            $(outdir)/parmesan23.lisp \
                            $(outdir)/feta-alphabet23.lisp
 $(outdir)/feta20.otf-table: $(outdir)/feta20.lisp \
                            $(outdir)/feta-noteheads20.lisp \
+                           $(outdir)/feta-flags20.lisp \
                            $(outdir)/parmesan20.lisp \
                            $(outdir)/feta-alphabet20.lisp
 $(outdir)/feta18.otf-table: $(outdir)/feta18.lisp \
                            $(outdir)/feta-noteheads18.lisp \
+                           $(outdir)/feta-flags18.lisp \
                            $(outdir)/parmesan18.lisp \
                            $(outdir)/feta-alphabet18.lisp
 $(outdir)/feta16.otf-table: $(outdir)/feta16.lisp \
                            $(outdir)/feta-noteheads16.lisp \
+                           $(outdir)/feta-flags16.lisp \
                            $(outdir)/parmesan16.lisp \
                            $(outdir)/feta-alphabet16.lisp
 $(outdir)/feta14.otf-table: $(outdir)/feta14.lisp \
                            $(outdir)/feta-noteheads14.lisp \
+                           $(outdir)/feta-flags14.lisp \
                            $(outdir)/parmesan14.lisp \
                            $(outdir)/feta-alphabet14.lisp
 $(outdir)/feta13.otf-table: $(outdir)/feta13.lisp \
                            $(outdir)/feta-noteheads13.lisp \
+                           $(outdir)/feta-flags13.lisp \
                            $(outdir)/parmesan13.lisp \
                            $(outdir)/feta-alphabet13.lisp
 $(outdir)/feta11.otf-table: $(outdir)/feta11.lisp \
                            $(outdir)/feta-noteheads11.lisp \
+                           $(outdir)/feta-flags11.lisp \
                            $(outdir)/parmesan11.lisp \
                            $(outdir)/feta-alphabet11.lisp
 
diff --git a/mf/bigcheese.pe.in b/mf/bigcheese.pe.in
deleted file mode 100644 (file)
index e1d1843..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#!@FONTFORGE@
-
-
-
-New();
-
-# Separate Feta versioning?
-# Naming: * expose LilyPond20/LilyPond rather than bigcheese
-#         *  using 20 as Weight works for gnome-font-select widget: gfs
-SetFontNames("bigcheese20", "LilyPond", "LilyPond BigCheese 20", "20", "GNU GPL", "@TOPLEVEL_VERSION@");
-
-MergeFonts("feta20.pfa");
-MergeFonts("feta-noteheads20.pfa");
-MergeFonts("parmesan20.pfa");
-
-# load nummer/din after setting PUA.
-i = 0;
-while (i < CharCnt())
-  Select(i);
-# crashes fontforge, use PUA for now -- jcn
-# SetUnicodeValue(i + 0xF0000, 0);
-/*
-PRIVATE AREA
-       In the BMP, the range 0xe000 to 0xf8ff will never be  assigned  to  any
-       characters  by  the standard and is reserved for private usage. For the
-       Linux community, this private area has been subdivided further into the
-       range  0xe000  to 0xefff which can be used individually by any end-user
-       and the Linux zone in the range 0xf000 to 0xf8ff where  extensions  are
-       coordinated  among  all  Linux  users.  The  registry of the characters
-       assigned to the Linux zone is currently maintained by  H.  Peter  Anvin
-       <Peter.Anvin@linux.org>.
-*/
-  SetUnicodeValue(i + 0xE000, 0);
-  ++i;
-endloop
-
-
-MergeFonts("feta-nummer10.pfa");
-MergeFonts("feta-din14.pfa");
-MergeKern("feta-din14.tfm");
-
-LoadTableFromFile("LILC", "feta20.otf-table")
-
-Generate("bigcheese20.otf");
-Generate("bigcheese20.cff");
index 6a095226a3b379f2df1c8cfee152071c668db558..5fb5ff1c7df8ec1a833c82ead924981a745d8a57 100644 (file)
@@ -90,11 +90,11 @@ def draw_brace (expr height_sharp, width_sharp, slt_sharp, brace_number) =
                y0 = y1;
                x0 = x1 - 2/6 thin;
 
-               pendir = unitvector (x3 - x1, y3l / 6 - y1);
+               pendir = unitvector (x3 - x1, y3l / 8 - y1);
                penangle = angle pendir - 90;
                penpos3 (thin, penangle);
                penpos2 (thick, angle (z3 - z1) - 90);
-               penpos1 (2/3 thin, penangle);
+               penpos1 (-2 * (x0 - x1), penangle);
 
                penlabels (1, 2, 3);
                labels (0);
@@ -116,11 +116,21 @@ def draw_brace (expr height_sharp, width_sharp, slt_sharp, brace_number) =
 enddef;
 
 
-save stafflinethickness;
+save linethickness;
 save increment;
+save last_brace_number;
+save min_width;
+save max_width;
+save min_thin;
+save max_thin;
 
 linethickness := 0.5 pt#;
 increment := 0.5 pt#;
+last_brace_number := braces_per_font * 9 - 1;
+min_width := 2 pt#;
+max_width := 20 pt#;
+min_thin := 0.2 pt#;
+max_thin := 1.25 pt#;
 y := 10 pt#;
 
 for i := 0 step 1 until font_count:
@@ -139,13 +149,10 @@ for i := 0 step 1 until font_count:
                        errmessage "please report to <bug-lilypond@gnu.org>";
                fi;
 
-               % x should be about one staff space, taking brace to have
-               % default height of 3 staffs, this yields height / 3 / 4 = 12
-               % but 15 looks better
-               x := y / 15;
+               x := (y / last_brace_number) [min_width, max_width];
 
                increment := x / 10;
-               linethickness :=  min (0.5 pt#, y / 150);
+               linethickness := (y / last_brace_number) [min_thin, max_thin];
                if i = font_count:
                        draw_brace (y, x, linethickness, number);
                fi;
diff --git a/mf/feta-flags-generic.mf b/mf/feta-flags-generic.mf
new file mode 100644 (file)
index 0000000..173125b
--- /dev/null
@@ -0,0 +1,47 @@
+% 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--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%
+%
+% 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/>.
+
+
+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");
+
+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#);
+
+fet_endfont;
index 261c55b3074364380394abed58496f65995aff9b..a4734923da0038027514dc1d300521e3d837be9a 100644 (file)
@@ -133,12 +133,14 @@ endgroup
 enddef;
 
 
-fet_beginchar ("8th Flag (up)", "u3");
+
+
+def upstemsingleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 1;
-       total_depth# = 3 staff_space# - blot_diameter# / 2;
+       total_depth# = (3 - shortening) * staff_space# - blot_diameter# / 2;
        flare = staff_space;
        flagspace# = staff_space#;
        hip_depth_ratio = .72;
@@ -160,15 +162,15 @@ fet_beginchar ("8th Flag (up)", "u3");
 
        draw_square_block ((-0.5 stemthickness_rounded, 0),
                           (0, (-flag_count * staff_space_rounded)));
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("16th Flag (up)", "u4");
+def upstemdoubleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 2;
-       total_depth# = 3.5 staff_space# - blot_diameter# / 2;
+       total_depth# = (3.5 - shortening) * staff_space# - blot_diameter# / 2;
        flare = .85 staff_space;
        flagspace# = .85 staff_space#;
        hip_depth_ratio = .72;
@@ -193,15 +195,15 @@ fet_beginchar ("16th Flag (up)", "u4");
 
        draw_square_block ((-0.5 stemthickness_rounded, 0),
                           (0, (-flag_count * staff_space_rounded)));
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("32nd Flag (up)", "u5");
+def upstemtripleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 3;
-       total_depth# = 4.25 staff_space# - blot_diameter# / 2;
+       total_depth# = (4.25 - shortening) * staff_space# - blot_diameter# / 2;
        flare = .85 staff_space;
        flagspace# = .87 staff_space#;
        hip_depth_ratio = .72;
@@ -228,15 +230,15 @@ fet_beginchar ("32nd Flag (up)", "u5");
 
        draw_square_block ((-0.5 stemthickness_rounded, 0),
                           (0, (-flag_count * staff_space_rounded)));
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("64th Flag (up)", "u6");
+def upstemquadrupleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 4;
-       total_depth# = 5.25 staff_space# - blot_diameter# / 2;
+       total_depth# = (5.25 - shortening) *  staff_space# - blot_diameter# / 2;
        flare = .85 staff_space;
        flagspace# = .9 staff_space#;
        hip_depth_ratio = .72;
@@ -265,15 +267,15 @@ fet_beginchar ("64th Flag (up)", "u6");
 
        draw_square_block ((-0.5 stemthickness_rounded, 0),
                           (0, (-flag_count * staff_space_rounded)));
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("128th Flag (up)", "u7");
+def upstemquintupleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 5;
-       total_depth# = 6.25 staff_space# - blot_diameter# / 2;
+       total_depth# = (6.25 - shortening) *  staff_space# - blot_diameter# / 2;
        flare = .85 staff_space;
        flagspace# = .93 staff_space#;
        hip_depth_ratio = .72;
@@ -304,15 +306,17 @@ fet_beginchar ("128th Flag (up)", "u7");
 
        draw_square_block ((-0.5 stemthickness_rounded, 0),
                           (0, (-flag_count * staff_space_rounded)));
-fet_endchar;
+enddef;
+
 
 
-fet_beginchar ("8th (down)", "d3");
+
+def downstemsingleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 1;
-       total_depth# = 2.75 staff_space#;
+       total_depth# = (2.75 - shortening) * staff_space#;
        flare = staff_space;
        flagspace# = .9 staff_space#;
        hip_depth_ratio = .74;
@@ -336,15 +340,15 @@ fet_beginchar ("8th (down)", "d3");
                           (0, (-flag_count * staff_space_rounded)));
 
        y_mirror_char;
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("16th (down)", "d4");
+def downstemdoubleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 2;
-       total_depth# = 3.0 staff_space# - blot_diameter# / 2;
+       total_depth# = (3.0 - shortening) * staff_space# - blot_diameter# / 2;
        flare = .82 staff_space;
        flagspace# = .9 staff_space#;
        hip_depth_ratio = .85;
@@ -371,15 +375,15 @@ fet_beginchar ("16th (down)", "d4");
                           (0, (-flag_count * staff_space_rounded)));
 
        y_mirror_char;
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("32nd (down)", "d5");
+def downstemtripleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 3;
-       total_depth# = 3.75 * staff_space# - blot_diameter# / 2;
+       total_depth# = (3.75 - shortening) * staff_space# - blot_diameter# / 2;
        flare = .82 staff_space;
        flagspace# = .88 staff_space#;
        hip_depth_ratio = .87;
@@ -408,15 +412,15 @@ fet_beginchar ("32nd (down)", "d5");
                           (0, (-flag_count * staff_space_rounded)));
 
        y_mirror_char;
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("64th (down)", "d6");
+def downstemquadrupleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 4;
-       total_depth# = 4.5 staff_space# - blot_diameter# / 2;
+       total_depth# = (4.5 - shortening) * staff_space# - blot_diameter# / 2;
        flare = .8 staff_space;
        flagspace# = .9 staff_space#;
        hip_depth_ratio = .83;
@@ -447,15 +451,15 @@ fet_beginchar ("64th (down)", "d6");
                           (0, (-flag_count * staff_space_rounded)));
 
        y_mirror_char;
-fet_endchar;
+enddef;
 
 
-fet_beginchar ("128th (down)", "d7");
+def downstemquintupleflag (expr shortening) =
        save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
 
        flag_count = 5;
-       total_depth# = 5.5 staff_space# - blot_diameter# / 2;
+       total_depth# = (5.5 - shortening) * staff_space# - blot_diameter# / 2;
        flare = .8 staff_space;
        flagspace# = .92 staff_space#;
        hip_depth_ratio = .85;
@@ -488,9 +492,66 @@ fet_beginchar ("128th (down)", "d7");
                           (0, (-flag_count * staff_space_rounded)));
 
        y_mirror_char;
+enddef;
+
+
+
+
+fet_beginchar ("8th Flag (up)", "u3");
+       upstemsingleflag (0.0);
 fet_endchar;
 
 
+fet_beginchar ("16th Flag (up)", "u4");
+       upstemdoubleflag (0);
+fet_endchar;
+
+
+fet_beginchar ("32nd Flag (up)", "u5");
+       upstemtripleflag (0);
+fet_endchar;
+
+
+fet_beginchar ("64th Flag (up)", "u6");
+       upstemquadrupleflag (0);
+fet_endchar;
+
+
+fet_beginchar ("128th Flag (up)", "u7");
+       upstemquintupleflag (0);
+fet_endchar;
+
+
+
+
+
+fet_beginchar ("8th Flag (down)", "d3");
+       downstemsingleflag (0.0);
+fet_endchar;
+
+
+fet_beginchar ("16th Flag (down) 3", "d4");
+       downstemdoubleflag (0);
+fet_endchar;
+
+
+fet_beginchar ("32nd Flag (down)", "d5");
+       downstemtripleflag (0);
+fet_endchar;
+
+
+fet_beginchar ("64th Flag (down)", "d6");
+       downstemquadrupleflag (0);
+fet_endchar;
+
+
+fet_beginchar ("128th Flag (down)", "d7");
+       downstemquintupleflag (0);
+fet_endchar;
+
+
+
+
 %%%%%%%%
 %
 % Single Stroke for Short Appogiatura
diff --git a/mf/feta-flags11.mf b/mf/feta-flags11.mf
new file mode 100644 (file)
index 0000000..30cd7f0
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags11.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 11.22;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
diff --git a/mf/feta-flags13.mf b/mf/feta-flags13.mf
new file mode 100644 (file)
index 0000000..3210b1a
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags13.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 12.60;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
diff --git a/mf/feta-flags14.mf b/mf/feta-flags14.mf
new file mode 100644 (file)
index 0000000..9a5449c
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags14.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 14.14;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
diff --git a/mf/feta-flags16.mf b/mf/feta-flags16.mf
new file mode 100644 (file)
index 0000000..d029937
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags16.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 15.87;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
diff --git a/mf/feta-flags18.mf b/mf/feta-flags18.mf
new file mode 100644 (file)
index 0000000..dcaefd4
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags18.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 17.82;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
diff --git a/mf/feta-flags20.mf b/mf/feta-flags20.mf
new file mode 100644 (file)
index 0000000..b7b834e
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags20.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 20;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
diff --git a/mf/feta-flags23.mf b/mf/feta-flags23.mf
new file mode 100644 (file)
index 0000000..dcd640c
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags23.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 22.45;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
diff --git a/mf/feta-flags26.mf b/mf/feta-flags26.mf
new file mode 100644 (file)
index 0000000..b2a1fe6
--- /dev/null
@@ -0,0 +1,13 @@
+% feta-flags26.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+
+design_size := 25.20;
+test := 0;
+
+
+input feta-flags-generic;
+
+end.
+
index f78895d0f29af8a59e1713505615eb63f1833317..6c00aa5784e3c43d85bab4315001f3127cb4e87c 100644 (file)
@@ -32,10 +32,6 @@ input feta-params;
 
 font_x_height staff_space#;
 
-%% this is a fallback so we can run the font without including feta-noteheads.
-black_notehead_width# := 1.0 staff_space#;
-
-
 fet_beginfont ("feta", design_size, "fetaMusic");
 
 if test = 0:
index 4a952ed407102b7df242e22f3e9222e092d664b3..b63158bbe842817f46c244bdb82c5c6d69a1b4f0 100644 (file)
@@ -32,19 +32,9 @@ input feta-params;
 
 font_x_height staff_space#;
 
-%% this is a fallback so we can run the font without
-%%    including feta-noteheads.
-black_notehead_width# := 1.0 staff_space#;
-
-
 fet_beginfont ("feta", design_size, "fetaMusic");
 
-if test = 0:
-       input feta-noteheads;
-        input feta-flags;
-else:
-       input feta-noteheads-test-generic.mf;
-fi
+input feta-noteheads;
 
 autometric_parameter ("staffsize", staffsize#);
 autometric_parameter ("stafflinethickness", stafflinethickness#);
diff --git a/mf/feta-noteheads-test-generic.mf b/mf/feta-noteheads-test-generic.mf
deleted file mode 100644 (file)
index 0e381bd..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%
-% test stuff.
-% in a separate file to avoid tainting non-test font files for testing.
-%
-
-input feta-noteheads;
-%input feta-flags;
index 54a51f622a04aade22a479a7d84f6c4617dab2ae..c72522072195d2b9751158e12cd0014a333294c2 100644 (file)
@@ -36,94 +36,20 @@ picture remember_pic;
 % NOTE HEAD VARIABLES
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-save black_notehead_width, noteheight;
-save half_notehead_width, whole_notehead_width, slash_thick;
-save slash_slope, overdone_heads, solfa_noteheight;
+save half_notehead_width, whole_notehead_width;
+save solfa_noteheight;
 
-numeric noteheight;
-numeric slash_thick;
-numeric black_notehead_width;
 numeric whole_notehead_width;
 numeric half_notehead_width;
 
-
 fet_begingroup ("noteheads");
 
 
-% Slope of slash.  From scm/grob-description.scm.  How to auto-copy?
-slash_slope := 1.7;
-
-% Thickness of slash lines.  Quarter notes get 1.5slt width.
-slash_thick# := 2/3 * 0.48 staff_space#;
-
-
-%
-% Hand-engraved music often has balls extending above and below
-% the lines.  If you like that, modify overdone heads (unit:
-% stafflinethickness).
-%
-overdone_heads = 0.0;
-noteheight# := staff_space# + (1 + overdone_heads) * stafflinethickness#;
-
-
 %
 % solfa heads should not overlap on chords.
 %
 solfa_noteheight# := staff_space# - stafflinethickness#;
 
-define_pixels (slash_thick);
-define_whole_vertical_pixels (noteheight);
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% SLANT moves both extrema on the long axis (by SLANT * ELLIPTICITY,
-% so SLANT = -1, puts the extreme on the long axis next to the short
-% axis one).
-%
-
-def draw_outside_ellipse (expr ellipticity, tilt, superness, slant) =
-       save attachment_y;
-       save pat;
-       path pat;
-
-       pat := superellipse ((ellipticity, 0), (-slant * ellipticity, 1.0),
-                            (-ellipticity, 0), (slant * ellipticity, -1.0),
-                            superness);
-       pat := pat rotated tilt;
-
-       save top_point, right_point;
-       pair top_point, right_point;
-
-       top_point := directionpoint left of pat;
-       right_point := directionpoint up of pat;
-
-       save scaling, width;
-
-       scaling# = noteheight# / (2 ypart (top_point));
-       width# := 2 xpart (right_point) * scaling#;
-       define_pixels (scaling, width);
-
-       set_char_box (0, width#, noteheight# / 2, noteheight# / 2);
-
-       d := d - feta_space_shift;
-
-       % attachment Y
-       charwy := ypart (right_point) * scaling#;
-       charwx := width#;
-
-       pat := pat scaled scaling shifted (w / 2, .5 (h - d));
-
-       width := hround width;
-
-       if test_outlines = 1:
-               draw pat;
-       else:
-               fill pat;
-       fi;
-enddef;
-
-
 def undraw_inside_ellipse (expr ellipticity, tilt, superness, clearance) =
 begingroup
        save pat;
@@ -344,10 +270,7 @@ fi;
 
 
 fet_beginchar ("Quarter notehead", "s2");
-       % used to have 32. With 31, they are slightly bolder.
-       draw_outside_ellipse (1.49 - puff_up_factor / 3.0, 31, 0.707, 0);
-       black_notehead_width# := charwd;
-
+       draw_quarter_path;
        draw_staff (-2, 2, 0);
 fet_endchar;
 
index 4d0a5eb4b527b873f9fcbc9b75e9c5e77a30fd64..244c262ec3fefbfbe20e1591c8e9bb4a6e5b8a57 100644 (file)
@@ -222,3 +222,89 @@ else:
 fi;
 
 feta_fillpen := savepen;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Notehead width and height are defined here.
+%
+%
+% Slope of slash.  From scm/grob-description.scm.  How to auto-copy?
+slash_slope := 1.7;
+
+% Thickness of slash lines.  Quarter notes get 1.5slt width.
+slash_thick# := 2/3 * 0.48 staff_space#;
+
+%
+% Hand-engraved music often has balls extending above and below
+% the lines.  If you like that, modify overdone heads (unit:
+% stafflinethickness).
+%
+overdone_heads = 0.0;
+noteheight# := staff_space# + (1 + overdone_heads) * stafflinethickness#;
+
+define_pixels (slash_thick);
+define_whole_vertical_pixels (noteheight);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This is used to draw all elliptical notes; it also sets
+% black_notehead_width, so it should be called in any file that
+% needs the value of black_notehead_width.
+%
+% SLANT moves both extrema on the long axis (by SLANT * ELLIPTICITY,
+% so SLANT = -1, puts the extreme on the long axis next to the short
+% axis one).
+%
+
+def draw_outside_ellipse (expr ellipticity, tilt, superness, slant) =
+        save attachment_y;
+        save pat;
+        path pat;
+
+        pat := superellipse ((ellipticity, 0), (-slant * ellipticity, 1.0),
+                             (-ellipticity, 0), (slant * ellipticity, -1.0),
+                             superness);
+        pat := pat rotated tilt;
+
+        save top_point, right_point;
+        pair top_point, right_point;
+
+        top_point := directionpoint left of pat;
+        right_point := directionpoint up of pat;
+
+        save scaling, width;
+
+        scaling# := noteheight# / (2 ypart (top_point));
+        width# := 2 xpart (right_point) * scaling#;
+        define_pixels (scaling, width);
+       set_char_box (0, width#, noteheight# / 2, noteheight# / 2);
+
+        d := d - feta_space_shift;
+
+        % attachment Y
+        charwy := ypart (right_point) * scaling#;
+        charwx := width#;
+
+        pat := pat scaled scaling shifted (w / 2, .5 (h - d));
+
+        width := hround width;
+
+        if test_outlines = 1:
+                draw pat;
+        else:
+                fill pat;
+        fi;
+enddef;
+
+
+def draw_quarter_path =
+        draw_outside_ellipse (1.49 - puff_up_factor / 3.0, 31, 0.707, 0);
+enddef;
+
+test_outlines := 0;
+draw_quarter_path;
+black_notehead_width# := charwd;
+
+define_pixels (slash_thick);
+define_whole_vertical_pixels (noteheight);
+
+
index 4f270801793997ead28f603db6703fc950eaf107..1e416d36d37f8b40a861dd72c39ef523afba3a95 100644 (file)
@@ -125,6 +125,24 @@ fet_beginchar ("breve rest", "M1");
        draw_staff (-2, 2, 0);
 fet_endchar;
 
+fet_beginchar ("breve rest (outside staff)", "M1o");
+       set_char_box (0, breve_rest_x#,
+                     ledgerlinethickness# / 2, breve_rest_y#);
+
+       draw_block ((0, 0), (breve_rest_x, breve_rest_y));
+
+       pickup pencircle scaled ledgerlinethickness;
+
+       y5 = y6 = breve_rest_y;
+       lft x5 = -b - breve_rest_y / 2;
+       rt x6 = w + breve_rest_y / 2;
+
+       draw_gridline (z5, z6, ledgerlinethickness_rounded);
+       draw_gridline ((x5, 0), (x6, 0), ledgerlinethickness_rounded);
+
+       draw_staff (-2, 2, 3);
+fet_endchar;
+
 
 fet_beginchar ("Quarter rest", "2");
        save alpha, yshift, height;
index b3843960c27329119fadc6d7b0b932894b3088dd..d04ed18b7b5e99c2641079b77e6af9a459a634ad 100644 (file)
@@ -1447,17 +1447,18 @@ enddef;
 
 
 fet_beginchar ("Arpeggio", "arpeggio");
+       begingroup;
        save height, overshoot, width;
-       height# = staff_space#;
-       width# = 0.8 height#;
-       overshoot# = 0.25 staff_space#;
+       height# := staff_space#;
+       width# := 0.8 * height#;
+       overshoot# := 0.25 * staff_space#;
        define_pixels (height, overshoot, width);
-
        set_char_box (0, width#, 0, height#);
        draw_arpeggio;
        penlabels (range 1 thru 9);
 
        draw_staff (-2, 2, 0.0);
+       endgroup;
 fet_endchar;
 
 
@@ -1468,7 +1469,8 @@ fet_endchar;
 %
 
 fet_beginchar ("Trill_element", "trill_element");
-       save height, overshoot;
+       begingroup;
+       save height, overshoot, width;
        height# = staff_space#;
        width# = 0.8 height#;
        overshoot# = 0.25 staff_space#;
@@ -1480,6 +1482,7 @@ fet_beginchar ("Trill_element", "trill_element");
        currentpicture := currentpicture shifted -(width / 2, height / 2);
        currentpicture := currentpicture rotated 90;
        currentpicture := currentpicture shifted (height / 2, width / 2);
+       endgroup;
 fet_endchar;
 
 
index 682dc8bc3c149b46d3f21e015e13b530e3ec8cd2..130c3c50d4b5ed25a2748dc3770eaf420a0b7424 100644 (file)
@@ -46,6 +46,8 @@ fet_begingroup ("noteheads");
 %
 % TODO: should depth/height include appendages/stems?
 
+save overdone_heads, noteheight;
+
 overdone_heads = 0;
 noteheight# := staff_space# + (1 + overdone_heads) * stafflinethickness#;
 define_pixels (noteheight);
index 09ac055f46cfd216624c33ae825337353db4e7c9..06c13648738254d3b5f60438eed59655a1c92a94 100644 (file)
@@ -95,16 +95,25 @@ bind def
 
 /draw_round_box % width height x y blot
 {
-       setlinewidth % w h x y
-       0 setlinecap
-       1 setlinejoin
+        dup
+       0.0 gt {
+               setlinewidth % w h x y
+               0 setlinecap
+               1 setlinejoin
 
-       rmoveto % w h
-       currentpoint % w h x1 y1
-       4 2 roll % x1 y1 w h
-       4 copy
-       rectfill
-       rectstroke
+               rmoveto % w h
+               currentpoint % w h x1 y1
+               4 2 roll % x1 y1 w h
+               4 copy
+               rectfill
+               rectstroke
+       } {
+               pop % w h x y
+               rmoveto % w h
+               currentpoint % w h x1 y1
+               4 2 roll % x1 y1 w h
+               rectfill
+       } ifelse
 } bind def
 
 /draw_polygon % fill? x(n) y(n) x(n-1) y(n-1) ... x(0) y(0) n blot
index 568ff17e75e42331648135b4423f0f836b16ee8c..9c0d90dc2fd031046252c59c4bda207a9420783b 100644 (file)
@@ -102,7 +102,7 @@ def source_links_replace (m, source_val):
     return 'href="' + os.path.join (source_val, m.group (1)) + '"'
 
 # More hardcoding, yay!
-splitted_docs_re = re.compile('(Documentation/out-www/(automated-engraving|essay|notation|changes|extending|music-glossary|usage|web|learning|snippets))/')
+splitted_docs_re = re.compile('(Documentation/out-www/(automated-engraving|essay|notation|changes|extending|music-glossary|usage|web|learning|snippets|contributor))/')
 lily_snippets_re = re.compile ('(href|src)="([0-9a-f]{2}/lily-.*?)"')
 pictures_re = re.compile ('src="(pictures/.*?)"')
 
index 25506ca9166f22d90232681b298f82a603410723..fc35924b66cdb1cc570d55db8a9aa9fccb3bc942 100644 (file)
@@ -49,28 +49,28 @@ def rule (version, message):
 @rule ((0, 1, 9), _ ('\\header { key = concat + with + operator }'))
 def conv(str):
     if re.search ('\\\\multi', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "\\multi")
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "\\multi")
+        stderr_write ('\n')
     return str
 
 
 @rule ((0, 1, 19), _ ('deprecated %s') % '\\octave')
 def conv (str):
     if re.search ('\\\\octave', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "\\octave")
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
-    #  raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "\\octave")
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
+    #   raise FatalConversionError ()
     return str
 
 
 @rule ((0, 1, 20), _ ('deprecated \\textstyle, new \\key syntax'))
 def conv (str):
     str = re.sub ('\\\\textstyle([^;]+);',
-                            '\\\\property Lyrics . textstyle = \\1', str)
+                             '\\\\property Lyrics . textstyle = \\1', str)
     # harmful to current .lys
     # str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str)
     return str
@@ -99,9 +99,9 @@ def conv (str):
 @rule ((1, 0, 2), _ ('\\header { key = concat + with + operator }'))
 def conv(str):
     if re.search ('\\\\header', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % _ ("new \\header format"))
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % _ ("new \\header format"))
+        stderr_write ('\n')
     return str
 
 
@@ -128,10 +128,10 @@ def conv(str):
 @rule ((1, 0, 6), 'foo = \\translator {\\type .. } ->\\translator {\\type ..; foo; }')
 def conv(str):
     if re.search ('[a-zA-Z]+ = *\\translator',str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % _ ("\\translator syntax"))
-       stderr_write ('\n')
-    #  raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % _ ("\\translator syntax"))
+        stderr_write ('\n')
+    #   raise FatalConversionError ()
     return str
 
 
@@ -184,10 +184,10 @@ def conv(str):
 @rule ((1, 0, 18), _ ('\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative'))
 def conv(str):
     if re.search ('\\\\repeat',str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "\\repeat")
-       stderr_write ('\n')
-    #  raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "\\repeat")
+        stderr_write ('\n')
+    #   raise FatalConversionError ()
     return str
 
 
@@ -266,65 +266,65 @@ def conv(str):
 @rule ((1, 3, 5), 'beamAuto moment properties')
 def conv (str):
     str = re.sub ('"?beamAuto([^"=]+)"? *= *"([0-9]+)/([0-9]+)" *;*',
-                 'beamAuto\\1 = #(make-moment \\2 \\3)',
-                 str)
+                  'beamAuto\\1 = #(make-moment \\2 \\3)',
+                  str)
     return str
 
 
 @rule ((1, 3, 17), 'stemStyle -> flagStyle')
 def conv (str):
     str = re.sub ('stemStyle',
-                 'flagStyle',
-                 str)
+                  'flagStyle',
+                  str)
     return str
 
 
 @rule ((1, 3, 18), 'staffLineLeading -> staffSpace')
 def conv (str):
     str = re.sub ('staffLineLeading',
-                 'staffSpace',
-                 str)
+                  'staffSpace',
+                  str)
     return str
 
 
 @rule ((1, 3, 23), _ ('deprecate %s ') % '\\repetitions')
 def conv(str):
     if re.search ('\\\\repetitions',str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "\\repetitions")
-       stderr_write ('\n')
-    #  raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "\\repetitions")
+        stderr_write ('\n')
+    #   raise FatalConversionError ()
     return str
 
 
 @rule ((1, 3, 35), 'textEmptyDimension -> textNonEmpty')
 def conv (str):
     str = re.sub ('textEmptyDimension *= *##t',
-                 'textNonEmpty = ##f',
-                 str)
+                  'textNonEmpty = ##f',
+                  str)
     str = re.sub ('textEmptyDimension *= *##f',
-                 'textNonEmpty = ##t',
-                 str)
+                  'textNonEmpty = ##t',
+                  str)
     return str
 
 
 @rule ((1, 3, 38), '\musicalpitch { a b c } -> #\'(a b c)')
 def conv (str):
     str = re.sub ("([a-z]+)[ \t]*=[ \t]*\\\\musicalpitch *{([- 0-9]+)} *\n",
-                 "(\\1 . (\\2))\n", str)
+                  "(\\1 . (\\2))\n", str)
     str = re.sub ("\\\\musicalpitch *{([0-9 -]+)}",
-                 "\\\\musicalpitch #'(\\1)", str)
+                  "\\\\musicalpitch #'(\\1)", str)
     if re.search ('\\\\notenames',str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % _ ("new \\notenames format"))
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % _ ("new \\notenames format"))
+        stderr_write ('\n')
     return str
 
 
 @rule ((1, 3, 39), '\\key A ;  ->\\key a;')
 def conv (str):
     def replace (match):
-       return '\\key %s;' % match.group (1).lower ()
+        return '\\key %s;' % match.group (1).lower ()
 
     str = re.sub ("\\\\key ([^;]+);",  replace, str)
     return str
@@ -333,9 +333,9 @@ def conv (str):
 @rule ((1, 3, 41), '[:16 c4 d4 ] -> \\repeat "tremolo" 2 { c16 d16 }')
 def conv (str):
     if re.search ('\\[:',str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % _ ("new tremolo format"))
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % _ ("new tremolo format"))
+        stderr_write ('\n')
     return str
 
 
@@ -354,9 +354,9 @@ def conv (str):
 @rule ((1, 3, 58), 'noteHeadStyle value: string -> symbol')
 def conv (str):
     if re.search ('\\\\keysignature', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % '\\keysignature')
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % '\\keysignature')
+        stderr_write ('\n')
     return str
 
 
@@ -369,8 +369,8 @@ def conv (str):
 @rule ((1, 3, 68), 'latexheaders = "\\input global" -> latexheaders = "global"')
 def conv (str):
     str = re.sub (r'latexheaders *= *"\\\\input ',
-                 'latexheaders = "',
-                 str)
+                  'latexheaders = "',
+                  str)
     return str
 
 
@@ -453,9 +453,9 @@ def conv (str):
 def conv (str):
     str = re.sub ('ChordNames*', 'ChordNames', str)
     if re.search ('\\\\textscript "[^"]* *"[^"]*"', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % _ ("new \\textscript markup text"))
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % _ ("new \\textscript markup text"))
+        stderr_write ('\n')
 
     str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str)
     return str
@@ -530,9 +530,9 @@ def regularize_id (str):
 @rule ((1, 3, 117), _ ('identifier names: %s') % '$!foo_bar_123 -> xfooBarABC')
 def conv (str):
     def regularize_dollar_reference (match):
-       return regularize_id (match.group (1))
+        return regularize_id (match.group (1))
     def regularize_assignment (match):
-       return '\n' + regularize_id (match.group (1)) + ' = '
+        return '\n' + regularize_id (match.group (1)) + ' = '
     str = re.sub ('\$([^\t\n ]+)', regularize_dollar_reference, str)
     str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str)
     return str
@@ -541,7 +541,7 @@ def conv (str):
 @rule ((1, 3, 120), 'paper_xxx -> paperXxxx, pedalup -> pedalUp.')
 def conv (str):
     def regularize_paper (match):
-       return regularize_id (match.group (1))
+        return regularize_id (match.group (1))
     str = re.sub ('(paper_[a-z]+)', regularize_paper, str)
     str = re.sub ('sustainup', 'sustainUp', str)
     str = re.sub ('nobreak', 'noBreak', str)
@@ -655,24 +655,24 @@ def conv (str):
 def conv (str):
 
     def func(match):
-       break_dict = {
-       "Instrument_name": "instrument-name",
-       "Left_edge_item": "left-edge",
-       "Span_bar": "span-bar",
-       "Breathing_sign": "breathing-sign",
-       "Staff_bar": "staff-bar",
-       "Clef_item": "clef",
-       "Key_item": "key-signature",
-       "Time_signature": "time-signature",
-       "Custos": "custos"
-       }
-       props =  match.group (1)
-       for (k,v) in break_dict.items():
-           props = re.sub (k, v, props)
-       return  "breakAlignOrder = #'(%s)" % props
+        break_dict = {
+        "Instrument_name": "instrument-name",
+        "Left_edge_item": "left-edge",
+        "Span_bar": "span-bar",
+        "Breathing_sign": "breathing-sign",
+        "Staff_bar": "staff-bar",
+        "Clef_item": "clef",
+        "Key_item": "key-signature",
+        "Time_signature": "time-signature",
+        "Custos": "custos"
+        }
+        props =  match.group (1)
+        for (k,v) in break_dict.items():
+            props = re.sub (k, v, props)
+        return  "breakAlignOrder = #'(%s)" % props
 
     str = re.sub ("breakAlignOrder *= *#'\\(([a-z_\n\tA-Z ]+)\\)",
-                 func, str)
+                  func, str)
     return str
 
 
@@ -724,11 +724,11 @@ def conv (str):
 @rule ((1, 5, 67), _ ('automaticMelismata turned on by default'))
 def conv (str):
     if re.search (r'\addlyrics',str) \
-          and re.search ('automaticMelismata', str)  == None:
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
-       stderr_write ('\n')
-       raise FatalConversionError ()
+           and re.search ('automaticMelismata', str)  == None:
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
+        stderr_write ('\n')
+        raise FatalConversionError ()
     return str
 
 
@@ -749,11 +749,11 @@ def conv (str):
 @rule ((1, 5, 72), 'set! point-and-click -> set-point-and-click!')
 def conv (str):
     str = re.sub ("""#\(set! +point-and-click +line-column-location\)""",
-                 """#(set-point-and-click! \'line-column)""", str)
+                  """#(set-point-and-click! \'line-column)""", str)
     str = re.sub ("""#\(set![ \t]+point-and-click +line-location\)""",
-                 '#(set-point-and-click! \'line)', str)
+                  '#(set-point-and-click! \'line)', str)
     str = re.sub ('#\(set! +point-and-click +#f\)',
-                 '#(set-point-and-click! \'none)', str)
+                  '#(set-point-and-click! \'none)', str)
     return str
 
 
@@ -777,19 +777,19 @@ def conv (str):
 
 
 spanner_subst ={
-       "text" : 'TextSpanEvent',
-       "decrescendo" : 'DecrescendoEvent',
-       "crescendo" : 'CrescendoEvent',
-       "Sustain" : 'SustainPedalEvent',
-       "slur" : 'SlurEvent',
-       "UnaCorda" : 'UnaCordaEvent',
-       "Sostenuto" : 'SostenutoEvent',
-       }
+        "text" : 'TextSpanEvent',
+        "decrescendo" : 'DecrescendoEvent',
+        "crescendo" : 'CrescendoEvent',
+        "Sustain" : 'SustainPedalEvent',
+        "slur" : 'SlurEvent',
+        "UnaCorda" : 'UnaCordaEvent',
+        "Sostenuto" : 'SostenutoEvent',
+        }
 
 def subst_ev_name (match):
     stype = 'STOP'
     if re.search ('start', match.group(1)):
-       stype= 'START'
+        stype= 'START'
     mtype = spanner_subst[match.group(2)]
     return "(make-span-event '%s %s)" % (mtype , stype)
 
@@ -825,34 +825,34 @@ def conv(str):
     str = re.sub (r'\(ly-', '(ly:', str)
 
     changed = [
-           r'duration\?',
-           r'font-metric\?',
-           r'molecule\?',
-           r'moment\?',
-           r'music\?',
-           r'pitch\?',
-           'make-duration',
-           'music-duration-length',
-           'duration-log',
-           'duration-dotcount',
-           'intlog2',
-           'duration-factor',
-           'transpose-key-alist',
-           'get-system',
-           'get-broken-into',
-           'get-original',
-           'set-point-and-click!',
-           'make-moment',
-           'make-pitch',
-           'pitch-octave',
-           'pitch-alteration',
-           'pitch-notename',
-           'pitch-semitones',
-           r'pitch<\?',
-           r'dir\?',
-           'music-duration-compress',
-           'set-point-and-click!'
-           ]
+            r'duration\?',
+            r'font-metric\?',
+            r'molecule\?',
+            r'moment\?',
+            r'music\?',
+            r'pitch\?',
+            'make-duration',
+            'music-duration-length',
+            'duration-log',
+            'duration-dotcount',
+            'intlog2',
+            'duration-factor',
+            'transpose-key-alist',
+            'get-system',
+            'get-broken-into',
+            'get-original',
+            'set-point-and-click!',
+            'make-moment',
+            'make-pitch',
+            'pitch-octave',
+            'pitch-alteration',
+            'pitch-notename',
+            'pitch-semitones',
+            r'pitch<\?',
+            r'dir\?',
+            'music-duration-compress',
+            'set-point-and-click!'
+            ]
 
     origre = r'\b(%s)' % '|'.join (changed)
 
@@ -864,7 +864,7 @@ def conv(str):
 @rule ((1, 7, 4), '<< >> -> < <  > >')
 def conv(str):
     if re.search ('new-chords-done',str):
-       return str
+        return str
 
     str = re.sub (r'<<', '< <', str)
     str = re.sub (r'>>', '> >', str)
@@ -881,18 +881,18 @@ def conv(str):
 @rule ((1, 7, 6), 'note\\script -> note-\script')
 def conv(str):
     kws =   ['arpeggio',
-            'sustainDown',
-            'sustainUp',
-            'f',
-            'p',
-            'pp',
-            'ppp',
-            'fp',
-            'ff',
-            'mf',
-            'mp',
-            'sfz',
-            ]
+             'sustainDown',
+             'sustainUp',
+             'f',
+             'p',
+             'pp',
+             'ppp',
+             'fp',
+             'ff',
+             'mf',
+             'mp',
+             'sfz',
+             ]
 
     origstr = '|'.join (kws)
     str = re.sub (r'([^_^-])\\(%s)\b' % origstr, r'\1-\\\2', str)
@@ -902,9 +902,9 @@ def conv(str):
 @rule ((1, 7, 10), "\property ChordName #'style -> #(set-chord-name-style 'style)")
 def conv(str):
     str = re.sub (r"\\property *ChordNames *\. *ChordName *\\(set|override) *#'style *= *#('[a-z]+)",
-                 r"#(set-chord-name-style \2)", str)
+                  r"#(set-chord-name-style \2)", str)
     str = re.sub (r"\\property *ChordNames *\. *ChordName *\\revert *#'style",
-                 r"", str)
+                  r"", str)
     return str
 
 
@@ -933,29 +933,29 @@ def conv(str):
 @rule ((1, 7, 16), "divisiomaior -> divisioMaior")
 def conv(str):
     str = re.sub ("divisiomaior",
-                 "divisioMaior", str)
+                  "divisioMaior", str)
     str = re.sub ("divisiominima",
-                 "divisioMinima", str)
+                  "divisioMinima", str)
     str = re.sub ("divisiomaxima",
-                 "divisioMaxima", str)
+                  "divisioMaxima", str)
     return str
 
 
 @rule ((1, 7, 17), "Skip_req  -> Skip_event")
 def conv(str):
     str = re.sub ("Skip_req_swallow_translator",
-                 "Skip_event_swallow_translator", str)
+                  "Skip_event_swallow_translator", str)
     return str
 
 
 @rule ((1, 7, 18), "groupOpen/Close  -> start/stopGroup, #'outer  -> #'enclose-bounds")
 def conv(str):
     str = re.sub ("groupOpen",
-                 "startGroup", str)
+                  "startGroup", str)
     str = re.sub ("groupClose",
-                 "stopGroup", str)
+                  "stopGroup", str)
     str = re.sub ("#'outer",
-                 "#'enclose-bounds", str)
+                  "#'enclose-bounds", str)
 
     return str
 
@@ -963,14 +963,14 @@ def conv(str):
 @rule ((1, 7, 19), _ ("remove %s") % "GraceContext")
 def conv(str):
     if re.search( r'\\GraceContext', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "GraceContext")
-       stderr_write (FROM_TO \
-                         % ("GraceContext", "#(add-to-grace-init .. )"))
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
-       raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "GraceContext")
+        stderr_write (FROM_TO \
+                          % ("GraceContext", "#(add-to-grace-init .. )"))
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
+        raise FatalConversionError ()
 
     str = re.sub ('HaraKiriStaffContext', 'RemoveEmptyStaffContext', str)
     return str
@@ -979,42 +979,42 @@ def conv(str):
 @rule ((1, 7, 22), "#'type -> #'style")
 def conv(str):
     str = re.sub (
-           r"(set|override|revert) *#'type",
-           r"\1 #'style",
-           str)
+            r"(set|override|revert) *#'type",
+            r"\1 #'style",
+            str)
     return str
 
 
 @rule ((1, 7, 23), "barNonAuto -> automaticBars")
 def conv(str):
     str = re.sub (
-           "barNonAuto *= *##t",
-           "automaticBars = ##f",
-           str)
+            "barNonAuto *= *##t",
+            "automaticBars = ##f",
+            str)
     str = re.sub (
-           "barNonAuto *= *##f",
-           "automaticBars = ##t",
-           str)
+            "barNonAuto *= *##f",
+            "automaticBars = ##t",
+            str)
     return str
 
 
 @rule ((1, 7, 24), _ ("cluster syntax"))
 def conv(str):
     if re.search( r'-(start|stop)Cluster', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % _ ("cluster syntax"))
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % _ ("cluster syntax"))
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
 
-       raise FatalConversionError ()
+        raise FatalConversionError ()
     return str
 
 
 @rule ((1, 7, 28), _ ("new Pedal style syntax"))
 def conv(str):
     str = re.sub (r"\\property *Staff\.(Sustain|Sostenuto|UnaCorda)Pedal *\\(override|set) *#'pedal-type *",
-                   r"\property Staff.pedal\1Style ", str)
+                    r"\property Staff.pedal\1Style ", str)
     str = re.sub (r"\\property *Staff\.(Sustain|Sostenuto|UnaCorda)Pedal *\\revert *#'pedal-type", '', str)
     return str
 
@@ -1024,27 +1024,27 @@ def sub_chord (m):
 
     origstr =  '<%s>' % str
     if re.search (r'\\\\', str):
-       return origstr
+        return origstr
 
     if re.search (r'\\property', str):
-       return origstr
+        return origstr
 
     if re.match (r'^\s*\)?\s*\\[a-zA-Z]+', str):
-       return origstr
+        return origstr
 
     durs = []
     def sub_durs (m, durs = durs):
-       durs.append(m.group(2))
-       return m.group (1)
+        durs.append(m.group(2))
+        return m.group (1)
 
     str = re.sub (r"([a-z]+[,'!? ]*)([0-9]+\.*)", sub_durs, str)
     dur_str = ''
 
     for d in durs:
-       if dur_str == '':
-           dur_str = d
-       if dur_str <> d:
-           return '<%s>' % m.group (1)
+        if dur_str == '':
+            dur_str = d
+        if dur_str <> d:
+            return '<%s>' % m.group (1)
 
     pslur_strs = ['']
     dyns = ['']
@@ -1052,86 +1052,86 @@ def sub_chord (m):
 
     last_str = ''
     while last_str <> str:
-       last_str = str
-
-       def sub_tremolos (m, slur_strs = slur_strs):
-           tr = m.group (2)
-           if tr not in slur_strs:
-               slur_strs.append (tr)
-           return  m.group (1)
-
-       str = re.sub (r"([a-z]+[',!? ]*)(:[0-9]+)",
-                     sub_tremolos, str)
-
-       def sub_dyn_end (m, dyns = dyns):
-           dyns.append (' \!')
-           return ' ' + m.group(2)
-
-       str = re.sub (r'(\\!)\s*([a-z]+)', sub_dyn_end, str)
-       def sub_slurs(m, slur_strs = slur_strs):
-           if '-)' not in slur_strs:
-               slur_strs.append (')')
-           return m.group(1)
-
-       def sub_p_slurs(m, slur_strs = slur_strs):
-           if '-\)' not in slur_strs:
-               slur_strs.append ('\)')
-           return m.group(1)
-
-       str = re.sub (r"\)[ ]*([a-z]+)", sub_slurs, str)
-       str = re.sub (r"\\\)[ ]*([a-z]+)", sub_p_slurs, str)
-       def sub_begin_slurs(m, slur_strs = slur_strs):
-           if '-(' not in slur_strs:
-               slur_strs.append ('(')
-           return m.group(1)
-
-       str = re.sub (r"([a-z]+[,'!?0-9 ]*)\(",
-                     sub_begin_slurs, str)
-       def sub_begin_p_slurs(m, slur_strs = slur_strs):
-           if '-\(' not in slur_strs:
-               slur_strs.append ('\(')
-           return m.group(1)
-
-       str = re.sub (r"([a-z]+[,'!?0-9 ]*)\\\(",
-               sub_begin_p_slurs, str)
-
-       def sub_dyns (m, slur_strs = slur_strs):
-           s = m.group(0)
-           if s == '@STARTCRESC@':
-               slur_strs.append ("\\<")
-           elif s == '@STARTDECRESC@':
-               slur_strs.append ("\\>")
-           elif s == r'-?\\!':
-               slur_strs.append ('\\!')
-           return ''
-
-       str = re.sub (r'@STARTCRESC@', sub_dyns, str)
-       str = re.sub (r'-?\\!', sub_dyns, str)
-
-       def sub_articulations (m, slur_strs = slur_strs):
-           a = m.group(1)
-           if a not in slur_strs:
-               slur_strs.append (a)
-           return ''
-
-       str = re.sub (r"([_^-]\@ACCENT\@)", sub_articulations,
-                     str)
-       str = re.sub (r"([_^-]\\[a-z]+)", sub_articulations,
-                     str)
-       str = re.sub (r"([_^-][>_.+|^-])", sub_articulations,
-                     str)
-       str = re.sub (r'([_^-]"[^"]+")', sub_articulations,
-                     str)
-
-       def sub_pslurs(m, slur_strs = slur_strs):
-           slur_strs.append (' \\)')
-           return m.group(1)
-       str = re.sub (r"\\\)[ ]*([a-z]+)", sub_pslurs, str)
+        last_str = str
+
+        def sub_tremolos (m, slur_strs = slur_strs):
+            tr = m.group (2)
+            if tr not in slur_strs:
+                slur_strs.append (tr)
+            return  m.group (1)
+
+        str = re.sub (r"([a-z]+[',!? ]*)(:[0-9]+)",
+                      sub_tremolos, str)
+
+        def sub_dyn_end (m, dyns = dyns):
+            dyns.append (' \!')
+            return ' ' + m.group(2)
+
+        str = re.sub (r'(\\!)\s*([a-z]+)', sub_dyn_end, str)
+        def sub_slurs(m, slur_strs = slur_strs):
+            if '-)' not in slur_strs:
+                slur_strs.append (')')
+            return m.group(1)
+
+        def sub_p_slurs(m, slur_strs = slur_strs):
+            if '-\)' not in slur_strs:
+                slur_strs.append ('\)')
+            return m.group(1)
+
+        str = re.sub (r"\)[ ]*([a-z]+)", sub_slurs, str)
+        str = re.sub (r"\\\)[ ]*([a-z]+)", sub_p_slurs, str)
+        def sub_begin_slurs(m, slur_strs = slur_strs):
+            if '-(' not in slur_strs:
+                slur_strs.append ('(')
+            return m.group(1)
+
+        str = re.sub (r"([a-z]+[,'!?0-9 ]*)\(",
+                      sub_begin_slurs, str)
+        def sub_begin_p_slurs(m, slur_strs = slur_strs):
+            if '-\(' not in slur_strs:
+                slur_strs.append ('\(')
+            return m.group(1)
+
+        str = re.sub (r"([a-z]+[,'!?0-9 ]*)\\\(",
+                sub_begin_p_slurs, str)
+
+        def sub_dyns (m, slur_strs = slur_strs):
+            s = m.group(0)
+            if s == '@STARTCRESC@':
+                slur_strs.append ("\\<")
+            elif s == '@STARTDECRESC@':
+                slur_strs.append ("\\>")
+            elif s == r'-?\\!':
+                slur_strs.append ('\\!')
+            return ''
+
+        str = re.sub (r'@STARTCRESC@', sub_dyns, str)
+        str = re.sub (r'-?\\!', sub_dyns, str)
+
+        def sub_articulations (m, slur_strs = slur_strs):
+            a = m.group(1)
+            if a not in slur_strs:
+                slur_strs.append (a)
+            return ''
+
+        str = re.sub (r"([_^-]\@ACCENT\@)", sub_articulations,
+                      str)
+        str = re.sub (r"([_^-]\\[a-z]+)", sub_articulations,
+                      str)
+        str = re.sub (r"([_^-][>_.+|^-])", sub_articulations,
+                      str)
+        str = re.sub (r'([_^-]"[^"]+")', sub_articulations,
+                      str)
+
+        def sub_pslurs(m, slur_strs = slur_strs):
+            slur_strs.append (' \\)')
+            return m.group(1)
+        str = re.sub (r"\\\)[ ]*([a-z]+)", sub_pslurs, str)
 
     ## end of while <>
 
     suffix = ''.join (slur_strs) + ''.join (pslur_strs) \
-            + ''.join (dyns)
+             + ''.join (dyns)
 
     return '@STARTCHORD@%s@ENDCHORD@%s%s' % (str , dur_str, suffix)
 
@@ -1145,7 +1145,7 @@ def sub_chords (str):
     marker_str = '%% new-chords-done %%'
 
     if re.search (marker_str,str):
-       return str
+        return str
     str = re.sub ('<<', '@STARTCHORD@', str)
     str = re.sub ('>>', '@ENDCHORD@', str)
 
@@ -1158,16 +1158,16 @@ def sub_chords (str):
     #                      <<a b>>-[ c d]
     # and gets skipped by articulation_substitute
     str = re.sub (r'\[ *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]*)',
-                 r'\1-[', str)
+                  r'\1-[', str)
     str = re.sub (r'\\! *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]*)',
-                 r'\1-\\!', str)
+                  r'\1-\\!', str)
 
     str = re.sub (r'<([^?])', r'%s\1' % simstart, str)
     str = re.sub (r'>([^?])', r'%s\1' % simend,  str)
     str = re.sub ('@STARTCRESC@', r'\\<', str)
     str = re.sub ('@STARTDECRESC@', r'\\>' ,str)
     str = re.sub (r'\\context *Voice *@STARTCHORD@',
-                 '@STARTCHORD@', str)
+                  '@STARTCHORD@', str)
     str = re.sub ('@STARTCHORD@', chordstart, str)
     str = re.sub ('@ENDCHORD@', chordend, str)
     str = re.sub (r'@ACCENT@', '>', str)
@@ -1185,45 +1185,45 @@ def text_markup (str):
     # Find the beginning of each markup:
     match = markup_start.search (str)
     while match:
-       result = result + str[:match.end (1)] + " \markup"
-       str = str[match.end( 2):]
-       # Count matching parentheses to find the end of the
-       # current markup:
-       nesting_level = 0
-       pars = re.finditer(r"[()]",str)
-       for par in pars:
-           if par.group () == '(':
-               nesting_level = nesting_level + 1
-           else:
-               nesting_level = nesting_level - 1
-           if nesting_level == 0:
-               markup_end = par.end ()
-               break
-       # The full markup in old syntax:
-       markup = str[:markup_end]
-       # Modify to new syntax:
-       markup = musicglyph.sub (r"{\\musicglyph", markup)
-       markup = columns.sub (r"{", markup)
-       markup = submarkup_start.sub (r"{\\\1", markup)
-       markup = leftpar.sub ("{", markup)
-       markup = rightpar.sub ("}", markup)
-
-       result = result + markup
-       # Find next markup
-       str = str[markup_end:]
-       match = markup_start.search(str)
+        result = result + str[:match.end (1)] + " \markup"
+        str = str[match.end( 2):]
+        # Count matching parentheses to find the end of the
+        # current markup:
+        nesting_level = 0
+        pars = re.finditer(r"[()]",str)
+        for par in pars:
+            if par.group () == '(':
+                nesting_level = nesting_level + 1
+            else:
+                nesting_level = nesting_level - 1
+            if nesting_level == 0:
+                markup_end = par.end ()
+                break
+        # The full markup in old syntax:
+        markup = str[:markup_end]
+        # Modify to new syntax:
+        markup = musicglyph.sub (r"{\\musicglyph", markup)
+        markup = columns.sub (r"{", markup)
+        markup = submarkup_start.sub (r"{\\\1", markup)
+        markup = leftpar.sub ("{", markup)
+        markup = rightpar.sub ("}", markup)
+
+        result = result + markup
+        # Find next markup
+        str = str[markup_end:]
+        match = markup_start.search(str)
     result = result + str
     return result
 
 def articulation_substitute (str):
     str = re.sub (r"""([^-])\[ *(\\?\)?[a-z]+[,']*[!?]?[0-9:]*\.*)""",
-                 r"\1 \2[", str)
+                  r"\1 \2[", str)
     str = re.sub (r"""([^-])\\\) *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
-                 r"\1 \2\\)", str)
+                  r"\1 \2\\)", str)
     str = re.sub (r"""([^-\\])\) *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
-                 r"\1 \2)", str)
+                  r"\1 \2)", str)
     str = re.sub (r"""([^-])\\! *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
-                 r"\1 \2\\!", str)
+                  r"\1 \2\\!", str)
     return str
 
 string_or_scheme = re.compile ('("(?:[^"\\\\]|\\\\.)*")|(#\\s*\'?\\s*\\()')
@@ -1235,38 +1235,38 @@ def smarter_articulation_subst (str):
     # Find the beginning of next string or Scheme expr.:
     match = string_or_scheme.search (str)
     while match:
-       # Convert the preceding LilyPond code:
-       previous_chunk = str[:match.start()]
-       result = result + articulation_substitute (previous_chunk)
-       if match.group (1): # Found a string
-           # Copy the string to output:
-           result = result + match.group (1)
-           str = str[match.end(1):]
-       else: # Found a Scheme expression. Count
-           # matching parentheses to find its end
-           str = str[match.start ():]
-           nesting_level = 0
-           pars = re.finditer(r"[()]",str)
-           for par in pars:
-               if par.group () == '(':
-                   nesting_level = nesting_level + 1
-               else:
-                   nesting_level = nesting_level - 1
-               if nesting_level == 0:
-                   scheme_end = par.end ()
-                   break
-           # Copy the Scheme expression to output:
-           result = result + str[:scheme_end]
-           str = str[scheme_end:]
-       # Find next string or Scheme expression:
-       match = string_or_scheme.search (str)
+        # Convert the preceding LilyPond code:
+        previous_chunk = str[:match.start()]
+        result = result + articulation_substitute (previous_chunk)
+        if match.group (1): # Found a string
+            # Copy the string to output:
+            result = result + match.group (1)
+            str = str[match.end(1):]
+        else: # Found a Scheme expression. Count
+            # matching parentheses to find its end
+            str = str[match.start ():]
+            nesting_level = 0
+            pars = re.finditer(r"[()]",str)
+            for par in pars:
+                if par.group () == '(':
+                    nesting_level = nesting_level + 1
+                else:
+                    nesting_level = nesting_level - 1
+                if nesting_level == 0:
+                    scheme_end = par.end ()
+                    break
+            # Copy the Scheme expression to output:
+            result = result + str[:scheme_end]
+            str = str[scheme_end:]
+        # Find next string or Scheme expression:
+        match = string_or_scheme.search (str)
     # Convert the remainder of the file
     result = result + articulation_substitute (str)
     return result
 
 def conv_relative(str):
     if re.search (r"\\relative", str):
-       str= "#(ly:set-option 'old-relative)\n" + str
+        str= "#(ly:set-option 'old-relative)\n" + str
 
     return str
 
@@ -1286,13 +1286,13 @@ def conv (str):
 @rule ((1, 9, 1), _ ("Remove - before articulation"))
 def conv (str):
     if re.search ("font-style",str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "font-style")
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "font-style")
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
 
-       raise FatalConversionError ()
+        raise FatalConversionError ()
 
     str = re.sub (r'-\\markup', r'@\\markup', str)
     str = re.sub (r'-\\', r'\\', str)
@@ -1308,12 +1308,12 @@ def conv (str):
 @rule ((1, 9, 2), "\\newcontext -> \\new")
 def conv (str):
     str = re.sub ('ly:set-context-property',
-                 'ly:set-context-property!', str)
+                  'ly:set-context-property!', str)
     str = re.sub ('\\\\newcontext', '\\\\new', str)
     str = re.sub ('\\\\grace[\t\n ]*([^{ ]+)',
-                 r'\\grace { \1 }', str)
+                  r'\\grace { \1 }', str)
     str = re.sub ("\\\\grace[\t\n ]*{([^}]+)}",
-                 r"""\\grace {
+                  r"""\\grace {
 \\property Voice.Stem \\override #'stroke-style = #"grace"
   \1
   \\property Voice.Stem \\revert #'stroke-style }
@@ -1325,34 +1325,34 @@ def conv (str):
                          ", fingerHorizontalDirection -> fingeringOrientations")
 def conv (str):
     str = re.sub ('accacciatura',
-                 'acciaccatura', str)
+                  'acciaccatura', str)
 
     if re.search ("context-spec-music", str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "context-spec-music")
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "context-spec-music")
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
 
-       raise FatalConversionError ()
+        raise FatalConversionError ()
 
     str = re.sub ('fingerHorizontalDirection *= *#(LEFT|-1)',
-                 "fingeringOrientations = #'(up down left)", str)
+                  "fingeringOrientations = #'(up down left)", str)
     str = re.sub ('fingerHorizontalDirection *= *#(RIGHT|1)',
-                 "fingeringOrientations = #'(up down right)", str)
+                  "fingeringOrientations = #'(up down right)", str)
     return str
 
 
 @rule ((1, 9, 4), _ ('Swap < > and << >>'))
 def conv (str):
     if re.search ('\\figures', str):
-       warning (_ ("attempting automatic \\figures conversion.  Check results!"));
+        warning (_ ("attempting automatic \\figures conversion.  Check results!"));
 
     def figures_replace (m):
-       s = m.group (1)
-       s = re.sub ('<', '@FIGOPEN@',s)
-       s = re.sub ('>', '@FIGCLOSE@',s)
-       return '\\figures { %s }' % s
+        s = m.group (1)
+        s = re.sub ('<', '@FIGOPEN@',s)
+        s = re.sub ('>', '@FIGCLOSE@',s)
+        return '\\figures { %s }' % s
 
     str = re.sub (r'\\figures[ \t\n]*{([^}]+)}', figures_replace, str)
     str = re.sub (r'\\<', '@STARTCRESC@', str)
@@ -1383,24 +1383,24 @@ def conv (str):
 @rule ((1, 9, 6), _ ('deprecate %s') % 'ly:get-font')
 def conv (str):
     if re.search ("ly:get-font", str) :
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "(ly:-get-font")
-       stderr_write ('\n')
-       stderr_write (FROM_TO \
-                         % ("(ly:paper-get-font (ly:grob-get-paper foo) .. )",
-                            "(ly:paper-get-font (ly:grob-get-paper foo) .. )"))
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
-       raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "(ly:-get-font")
+        stderr_write ('\n')
+        stderr_write (FROM_TO \
+                          % ("(ly:paper-get-font (ly:grob-get-paper foo) .. )",
+                             "(ly:paper-get-font (ly:grob-get-paper foo) .. )"))
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
+        raise FatalConversionError ()
 
     if re.search ("\\pitch *#", str) :
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "\\pitch")
-       stderr_write ('\n')
-       stderr_write (_ ("Use Scheme code to construct arbitrary note events."))
-       stderr_write ('\n')
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "\\pitch")
+        stderr_write ('\n')
+        stderr_write (_ ("Use Scheme code to construct arbitrary note events."))
+        stderr_write ('\n')
 
-       raise FatalConversionError ()
+        raise FatalConversionError ()
     return str
 
 
@@ -1408,73 +1408,73 @@ def conv (str):
 remove \\outputproperty, move ly:verbose into ly:get-option'''))
 def conv (str):
     def sub_alteration (m):
-       alt = m.group (3)
-       alt = {
-               '-1': 'FLAT',
-               '-2': 'DOUBLE-FLAT',
-               '0': 'NATURAL',
-               '1': 'SHARP',
-               '2': 'DOUBLE-SHARP',
-               }[alt]
-
-       return '(ly:make-pitch %s %s %s)' % (m.group(1), m.group (2),
-                                            alt)
+        alt = m.group (3)
+        alt = {
+                '-1': 'FLAT',
+                '-2': 'DOUBLE-FLAT',
+                '0': 'NATURAL',
+                '1': 'SHARP',
+                '2': 'DOUBLE-SHARP',
+                }[alt]
+
+        return '(ly:make-pitch %s %s %s)' % (m.group(1), m.group (2),
+                                             alt)
 
     str =re.sub ("\\(ly:make-pitch *([0-9-]+) *([0-9-]+) *([0-9-]+) *\\)",
-                sub_alteration, str)
+                 sub_alteration, str)
 
 
     str = re.sub ("ly:verbose", "ly:get-option 'verbose", str)
 
     m= re.search ("\\\\outputproperty #([^#]+)[\t\n ]*#'([^ ]+)", str)
     if m:
-       stderr_write (_ (\
-               r"""\outputproperty found,
+        stderr_write (_ (\
+                r"""\outputproperty found,
 Please hand-edit, using
 
   \applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)
 
 as a substitution text.""") % (m.group (1), m.group (2)) )
-       raise FatalConversionError ()
+        raise FatalConversionError ()
 
     if re.search ("ly:(make-pitch|pitch-alteration)", str) \
-          or re.search ("keySignature", str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "pitches")
-       stderr_write ('\n')
-       stderr_write (
-           _ ("""The alteration field of Scheme pitches was multiplied by 2
+           or re.search ("keySignature", str):
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "pitches")
+        stderr_write ('\n')
+        stderr_write (
+            _ ("""The alteration field of Scheme pitches was multiplied by 2
 to support quarter tone accidentals.  You must update the following constructs manually:
 
 * calls of ly:make-pitch and ly:pitch-alteration
 * keySignature settings made with \property
 """))
-       raise FatalConversionError ()
+        raise FatalConversionError ()
     return str
 
 
 @rule ((1, 9, 8), "dash-length -> dash-fraction")
 def conv (str):
     if re.search ("dash-length",str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "dash-length")
-       stderr_write ('\n')
-       stderr_write (FROM_TO % ("dash-length", "dash-fraction"))
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
-       raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "dash-length")
+        stderr_write ('\n')
+        stderr_write (FROM_TO % ("dash-length", "dash-fraction"))
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
+        raise FatalConversionError ()
     return str
 
 
 @rule ((2, 1, 1), "font-relative-size -> font-size")
 def conv (str):
     def func(match):
-       return "#'font-size = #%d" % (2*int (match.group (1)))
+        return "#'font-size = #%d" % (2*int (match.group (1)))
 
     str =re.sub (r"#'font-relative-size\s*=\s*#\+?([0-9-]+)", func, str)
     str =re.sub (r"#'font-family\s*=\s*#'ancient",
-                r"#'font-family = #'music", str)
+                 r"#'font-family = #'music", str)
     return str
 
 
@@ -1493,16 +1493,16 @@ def conv (str):
 @rule ((2, 1, 4), _ ("removal of automaticMelismata; use melismaBusyProperties instead."))
 def conv (str):
     def func (match):
-       c = match.group (1)
-       b = match.group (2)
+        c = match.group (1)
+        b = match.group (2)
 
-       if b == 't':
-           if c == 'Score':
-               return ''
-           else:
-               return r" \property %s.melismaBusyProperties \unset"  % c
-       elif b == 'f':
-           return r"\property %s.melismaBusyProperties = #'(melismaBusy)"  % c
+        if b == 't':
+            if c == 'Score':
+                return ''
+            else:
+                return r" \property %s.melismaBusyProperties \unset"  % c
+        elif b == 'f':
+            return r"\property %s.melismaBusyProperties = #'(melismaBusy)"  % c
 
     str = re.sub (r"\\property ([a-zA-Z]+)\s*\.\s*automaticMelismata\s*=\s*##([ft])", func, str)
     return str
@@ -1525,26 +1525,26 @@ def conv (str):
 """)
 def conv (str):
     str = re.sub (r'\\include\s*"paper([0-9]+)(-init)?.ly"',
-                 r"#(set-staff-size \1)", str)
+                  r"#(set-staff-size \1)", str)
 
     def sub_note (match):
-       dur = ''
-       log = int (match.group (1))
-       dots = int (match.group (2))
+        dur = ''
+        log = int (match.group (1))
+        dots = int (match.group (2))
 
-       if log >= 0:
-           dur = '%d' % (1 << log)
-       else:
-           dur = { -1 : 'breve',
-                   -2 : 'longa',
-                   -3 : 'maxima'}[log]
+        if log >= 0:
+            dur = '%d' % (1 << log)
+        else:
+            dur = { -1 : 'breve',
+                    -2 : 'longa',
+                    -3 : 'maxima'}[log]
 
-       dur += ('.' * dots)
+        dur += ('.' * dots)
 
-       return r'\note #"%s" #%s' % (dur, match.group (3))
+        return r'\note #"%s" #%s' % (dur, match.group (3))
 
     str = re.sub (r'\\note\s+#([0-9-]+)\s+#([0-9]+)\s+#([0-9.-]+)',
-                 sub_note, str)
+                  sub_note, str)
     return str
 
 
@@ -1563,37 +1563,37 @@ def conv (str):
 @rule ((2, 1, 14), "style = dotted -> dash-fraction = 0")
 def conv (str):
     str = re.sub (r"#'style\s*=\s*#'dotted-line",
-                r"#'dash-fraction = #0.0 ", str)
+                 r"#'dash-fraction = #0.0 ", str)
     return str
 
 
 @rule ((2, 1, 15), "LyricsVoice . instr(ument) -> vocalName")
 def conv (str):
     str = re.sub (r'LyricsVoice\s*\.\s*instrument\s*=\s*("[^"]*")',
-                r'LyricsVoice . vocalName = \1', str)
+                 r'LyricsVoice . vocalName = \1', str)
 
     str = re.sub (r'LyricsVoice\s*\.\s*instr\s*=\s*("[^"]*")',
-                r'LyricsVoice . vocNam = \1', str)
+                 r'LyricsVoice . vocNam = \1', str)
     return str
 
 
 @rule ((2, 1, 16), '\\musicglyph #"accidentals-NUM" -> \\sharp/flat/etc.')
 def conv (str):
     def sub_acc (m):
-       d = {
-       '4': 'doublesharp',
-       '3': 'threeqsharp',
-       '2': 'sharp',
-       '1': 'semisharp',
-       '0': 'natural',
-       '-1': 'semiflat',
-       '-2': 'flat',
-       '-3': 'threeqflat',
-       '-4': 'doubleflat'}
-       return '\\%s' %  d[m.group (1)]
+        d = {
+        '4': 'doublesharp',
+        '3': 'threeqsharp',
+        '2': 'sharp',
+        '1': 'semisharp',
+        '0': 'natural',
+        '-1': 'semiflat',
+        '-2': 'flat',
+        '-3': 'threeqflat',
+        '-4': 'doubleflat'}
+        return '\\%s' %  d[m.group (1)]
 
     str = re.sub (r'\\musicglyph\s*#"accidentals-([0-9-]+)"',
-                 sub_acc, str)
+                  sub_acc, str)
     return str
 
 
@@ -1601,18 +1601,18 @@ def conv (str):
 def conv (str):
 
     if re.search (r'\\partcombine', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "\\partcombine")
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
-       raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "\\partcombine")
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
+        raise FatalConversionError ()
 
     # this rule doesn't really work,
     # too lazy to figure out why.
     str = re.sub (r'\\context\s+Voice\s*=\s*one\s*\\partcombine\s+Voice\s*\\context\s+Thread\s*=\s*one(.*)\s*'
-                 + r'\\context\s+Thread\s*=\s*two',
-                 '\\\\newpartcombine\n\\1\n', str)
+                  + r'\\context\s+Thread\s*=\s*two',
+                  '\\\\newpartcombine\n\\1\n', str)
     return str
 
 
@@ -1629,7 +1629,7 @@ def conv (str):
 Harmonic notes. Thread context removed. Lyrics context removed."""))
 def conv (str):
     if re.search ('include "drumpitch', str):
-       stderr_write (_ ("Drums found. Enclose drum notes in \\drummode"))
+        stderr_write (_ ("Drums found. Enclose drum notes in \\drummode"))
 
     str = re.sub (r'\\include "drumpitch-init.ly"','', str)
 
@@ -1640,25 +1640,25 @@ def conv (str):
 
 
     if re.search ('drums->paper', str):
-       stderr_write (_ ("\n%s found. Check file manually!\n") % _("Drum notation"))
+        stderr_write (_ ("\n%s found. Check file manually!\n") % _("Drum notation"))
 
     str = re.sub (r"""\\apply\s+#\(drums->paper\s+'([a-z]+)\)""",
-                 r"""\property DrumStaff.drumStyleTable = #\1-style""",
-                 str)
+                  r"""\property DrumStaff.drumStyleTable = #\1-style""",
+                  str)
 
     if re.search ('Thread', str):
-       stderr_write (_ ("\n%s found. Check file manually!\n") % "Thread");
+        stderr_write (_ ("\n%s found. Check file manually!\n") % "Thread");
 
     str = re.sub (r"""(\\once\s*)?\\property\s+Thread\s*\.\s*NoteHead\s*"""
-                 + r"""\\(set|override)\s*#'style\s*=\s*#'harmonic"""
-                 + r"""\s+([a-z]+[,'=]*)([0-9]*\.*)"""
-                 ,r"""<\3\\harmonic>\4""", str)
+                  + r"""\\(set|override)\s*#'style\s*=\s*#'harmonic"""
+                  + r"""\s+([a-z]+[,'=]*)([0-9]*\.*)"""
+                  ,r"""<\3\\harmonic>\4""", str)
 
     str = re.sub (r"""\\new Thread""", """\context Voice""", str)
     str = re.sub (r"""Thread""", """Voice""", str)
 
     if re.search ('\bLyrics\b', str):
-       stderr_write (_ ("\n%s found. Check file manually!\n") % "Lyrics");
+        stderr_write (_ ("\n%s found. Check file manually!\n") % "Lyrics");
 
     str = re.sub (r"""LyricsVoice""", r"""L@ricsVoice""", str)
     str = re.sub (r"""\bLyrics\b""", r"""LyricsVoice""", str)
@@ -1686,12 +1686,12 @@ def conv (str):
     str = re.sub (r'brew-new-markup-molecule', 'Text_item::print', str)
     str = re.sub (r'LyricsVoice', 'Lyrics', str)
     str = re.sub (r'tupletInvisible',
-                 r"TupletBracket \\set #'transparent", str)
-#      str = re.sub (r'molecule', 'collage', str)
+                  r"TupletBracket \\set #'transparent", str)
+#       str = re.sub (r'molecule', 'collage', str)
 #molecule -> collage
     str = re.sub (r"\\property\s+[a-zA-Z]+\s*\.\s*[a-zA-Z]+\s*"
-                 + r"\\set\s*#'X-extent-callback\s*=\s*#Grob::preset_extent",
-                 "", str)
+                  + r"\\set\s*#'X-extent-callback\s*=\s*#Grob::preset_extent",
+                  "", str)
     return str
 
 
@@ -1702,16 +1702,16 @@ def conv (str):
 """ % _ ("new syntax for property settings:"))
 def conv (str):
     str = re.sub (r'(\\property[^=]+)=\s*([-0-9]+)',
-                 r'\1= #\2', str)
+                  r'\1= #\2', str)
     str = re.sub (r'\\property\s+([^. ]+)\s*\.\s*([^\\=]+)\s*\\(set|override)',
-                 r"\\overrid@ \1.\2 ", str)
+                  r"\\overrid@ \1.\2 ", str)
     str = re.sub (r'\\property\s+([^. ]+)\s*\.\s*([^\\= ]+)\s*=\s*',
-                 r'\\s@t \1.\2 = ', str)
+                  r'\\s@t \1.\2 = ', str)
     str = re.sub (r'\\property\s+([^. ]+)\s*\.\s*([^\\= ]+)\s*\\unset',
-                 r'\\uns@t \1.\2 ', str)
+                  r'\\uns@t \1.\2 ', str)
     str = re.sub (r'\\property\s+([^. ]+)\s*\.\s*([^\\= ]+)\s*\\revert'
-                 + r"\s*#'([-a-z0-9_]+)",
-                 r"\\rev@rt \1.\2 #'\3", str)
+                  + r"\s*#'([-a-z0-9_]+)",
+                  r"\\rev@rt \1.\2 #'\3", str)
     str = re.sub (r'Voice\.', '', str)
     str = re.sub (r'Lyrics\.', '', str)
     str = re.sub (r'ChordNames\.', '', str)
@@ -1728,32 +1728,32 @@ def conv (str):
 @rule ((2, 1, 23), _ ("Property setting syntax in \\translator{ }"))
 def conv (str):
     def subst_in_trans (match):
-       s = match.group (0)
-       s = re.sub (r'\s([a-zA-Z]+)\s*\\override',
-                     r' \\override \1', s)
-       s = re.sub (r'\s([a-zA-Z]+)\s*\\set',
-                     r' \\override \1', s)
-       s = re.sub (r'\s([a-zA-Z]+)\s*\\revert',
-                     r' \\revert \1', s)
-       return s
+        s = match.group (0)
+        s = re.sub (r'\s([a-zA-Z]+)\s*\\override',
+                      r' \\override \1', s)
+        s = re.sub (r'\s([a-zA-Z]+)\s*\\set',
+                      r' \\override \1', s)
+        s = re.sub (r'\s([a-zA-Z]+)\s*\\revert',
+                      r' \\revert \1', s)
+        return s
     str = re.sub (r'\\(translator|with)\s*{[^}]+}',  subst_in_trans, str)
 
     def sub_abs (m):
 
-       context = m.group ('context')
-       d = m.groupdict ()
-       if context:
-           context = " '%s" % context[:-1] # -1: remove .
-       else:
-           context = ''
+        context = m.group ('context')
+        d = m.groupdict ()
+        if context:
+            context = " '%s" % context[:-1] # -1: remove .
+        else:
+            context = ''
 
-       d['context'] = context
+        d['context'] = context
 
-       return r"""#(override-auto-beam-setting %(prop)s %(num)s %(den)s%(context)s)""" % d
+        return r"""#(override-auto-beam-setting %(prop)s %(num)s %(den)s%(context)s)""" % d
 
     str = re.sub (r"""\\override\s*(?P<context>[a-zA-Z]+\s*\.\s*)?autoBeamSettings"""
-                 +r"""\s*#(?P<prop>[^=]+)\s*=\s*#\(ly:make-moment\s+(?P<num>\d+)\s+(?P<den>\d)\s*\)""",
-                 sub_abs, str)
+                  +r"""\s*#(?P<prop>[^=]+)\s*=\s*#\(ly:make-moment\s+(?P<num>\d+)\s+(?P<den>\d)\s*\)""",
+                  sub_abs, str)
     return str
 
 
@@ -1774,12 +1774,12 @@ def conv (str):
     str = re.sub (r'ly:get-broken-into', 'ly:spanner-broken-into', str)
     str = re.sub (r'Melisma_engraver', 'Melisma_translator', str)
     if re.search ("ly:get-paper-variable", str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "ly:paper-get-variable")
-       stderr_write ('\n')
-       stderr_write (_ ('use %s') % '(ly:paper-lookup (ly:grob-paper ))')
-       stderr_write ('\n')
-       raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "ly:paper-get-variable")
+        stderr_write ('\n')
+        stderr_write (_ ('use %s') % '(ly:paper-lookup (ly:grob-paper ))')
+        stderr_write ('\n')
+        raise FatalConversionError ()
 
     str = re.sub (r'\\defaultAccidentals', "#(set-accidental-style 'default)", str)
     str = re.sub (r'\\voiceAccidentals', "#(set-accidental-style 'voice)", str)
@@ -1808,31 +1808,31 @@ def conv (str):
 @rule ((2, 1, 27), "property transposing -> tuning")
 def conv (str):
     def subst (m):
-       g = int (m.group (2))
-       o = g / 12
-       g -= o * 12
-       if g <  0:
-           g += 12
-           o -= 1
+        g = int (m.group (2))
+        o = g / 12
+        g -= o * 12
+        if g <  0:
+            g += 12
+            o -= 1
 
 
-       lower_pitches = filter (lambda x : x <= g, [0, 2, 4, 5, 7, 9, 11, 12])
-       s = len (lower_pitches) -1
-       a = g - lower_pitches [-1]
+        lower_pitches = filter (lambda x : x <= g, [0, 2, 4, 5, 7, 9, 11, 12])
+        s = len (lower_pitches) -1
+        a = g - lower_pitches [-1]
 
 
-       str = 'cdefgab' [s]
-       str += ['eses', 'es', '', 'is', 'isis'][a + 2]
-       if o < 0:
-           str += ',' * (-o - 1)
-       elif o >= 0:
-           str += "'" * (o + 1)
+        str = 'cdefgab' [s]
+        str += ['eses', 'es', '', 'is', 'isis'][a + 2]
+        if o < 0:
+            str += ',' * (-o - 1)
+        elif o >= 0:
+            str += "'" * (o + 1)
 
-       return '\\transposition %s ' % str
+        return '\\transposition %s ' % str
 
 
     str = re.sub (r"\\set ([A-Za-z]+\s*\.\s*)?transposing\s*=\s*#([-0-9]+)",
-                 subst, str)
+                  subst, str)
     return str
 
 
@@ -1861,16 +1861,16 @@ ly:get-stencil-extent -> ly:stencil-extent
 def conv (str):
     str = re.sub (r'\\threeq(flat|sharp)', r'\\sesqui\1', str)
     str = re.sub (r'ly:stencil-get-extent',
-                 'ly:stencil-extent', str)
+                  'ly:stencil-extent', str)
     str = re.sub (r'ly:translator-find',
-                 'ly:context-find', str)
+                  'ly:context-find', str)
     str = re.sub ('ly:unset-context-property','ly:context-unset-property',
-                 str)
+                  str)
 
     str = re.sub (r'ly:get-mutable-properties',
-                 'ly:mutable-music-properties',str)
+                  'ly:mutable-music-properties',str)
     str = re.sub (r'centralCPosition',
-                 'middleCPosition',str)
+                  'middleCPosition',str)
     return str
 
 
@@ -1883,22 +1883,22 @@ def conv (str):
 @rule ((2, 1, 33), 'breakAlignOrder -> break-align-orders.')
 def conv (str):
     str = re.sub (r"(\\set\s+)?(?P<context>(Score\.)?)breakAlignOrder\s*=\s*#'(?P<list>[^\)]+)",
-                 r"\n\\override \g<context>BreakAlignment #'break-align-orders = "
-                 + "#(make-vector 3 '\g<list>)", str)
+                  r"\n\\override \g<context>BreakAlignment #'break-align-orders = "
+                  + "#(make-vector 3 '\g<list>)", str)
     return str
 
 
 @rule ((2, 1, 34), 'set-paper-size -> set-default-paper-size.')
 def conv (str):
     str = re.sub (r"\(set-paper-size",
-                 "(set-default-paper-size",str)
+                  "(set-default-paper-size",str)
     return str
 
 
 @rule ((2, 1, 36), 'ly:mutable-music-properties -> ly:music-mutable-properties')
 def conv (str):
     str = re.sub (r"ly:mutable-music-properties",
-                 "ly:music-mutable-properties", str)
+                  "ly:music-mutable-properties", str)
     return str
 
 
@@ -1915,23 +1915,23 @@ def conv (str):
 @rule ((2, 3, 2), '\\FooContext -> \\Foo')
 def conv (str):
     if re.search ('textheight', str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "textheight")
-       stderr_write ('\n')
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
-       stderr_write (
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "textheight")
+        stderr_write ('\n')
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
+        stderr_write (
 _ ("""Page layout has been changed, using paper size and margins.
 textheight is no longer used.
 """))
     str = re.sub (r'\\OrchestralScoreContext', '\\Score', str)
     def func(m):
-       if m.group(1) not in ['RemoveEmptyStaff',
-                             'AncientRemoveEmptyStaffContext',
-                             'EasyNotation']:
-           return '\\' + m.group (1)
-       else:
-           return m.group (0)
+        if m.group(1) not in ['RemoveEmptyStaff',
+                              'AncientRemoveEmptyStaffContext',
+                              'EasyNotation']:
+            return '\\' + m.group (1)
+        else:
+            return m.group (0)
 
 
     str = re.sub (r'\\([a-zA-Z]+)Context\b', func, str)
@@ -1955,7 +1955,7 @@ def conv (str):
 def conv (str):
     str = re.sub (r'\\consistsend', '\\consists', str)
     str = re.sub (r'\\lyricsto\s+("?[a-zA-Z]+"?)(\s*\\new Lyrics\s*)?\\lyrics',
-                 r'\\lyricsto \1 \2', str)
+                  r'\\lyricsto \1 \2', str)
     return str
 
 
@@ -1971,14 +1971,14 @@ def conv (str):
     str = re.sub (r'\\addlyrics', r'\\oldaddlyrics', str)
     str = re.sub (r'\\newlyrics', r'\\addlyrics', str)
     if re.search (r"\\override\s*TextSpanner", str):
-       stderr_write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
+        stderr_write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
     return str
 
 
 @rule ((2, 3, 11), '\\setMmRestFermata -> ^\\fermataMarkup')
 def conv (str):
     str = re.sub (r'\\setMmRestFermata\s+(R[0-9.*/]*)',
-                 r'\1^\\fermataMarkup', str)
+                  r'\1^\\fermataMarkup', str)
     return str
 
 
@@ -2001,7 +2001,7 @@ def conv (str):
 }""", str)
     str = re.sub ('soloADue', 'printPartCombineTexts', str)
     str = re.sub (r'\\applymusic\s*#notes-to-clusters',
-                     '\\makeClusters', str)
+                      '\\makeClusters', str)
 
     str = re.sub (r'pagenumber\s*=', 'firstpagenumber = ', str)
     return str
@@ -2030,7 +2030,7 @@ def conv (str):
 def conv (str):
     str = re.sub (r'(slur|stem|phrasingSlur|tie|dynamic|dots|tuplet|arpeggio|)Both', r'\1Neutral', str)
     str = re.sub (r"\\applymusic\s*#\(remove-tag\s*'([a-z-0-9]+)\)",
-                 r"\\removeWithTag #'\1", str)
+                  r"\\removeWithTag #'\1", str)
     return str
 
 
@@ -2045,7 +2045,7 @@ def conv (str):
     str = re.sub (r'\\paper', r'\\layout', str)
     str = re.sub (r'\\bookpaper', r'\\paper', str)
     if re.search ('paper-set-staff-size', str):
-       warning (_ ('''staff size should be changed at top-level
+        warning (_ ('''staff size should be changed at top-level
 with
 
   #(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)
@@ -2060,17 +2060,17 @@ with
 @rule ((2, 3, 23), r'\context Foo = NOTENAME -> \context Foo = "NOTENAME"')
 def conv (str):
     str = re.sub (r'\\context\s+([a-zA-Z]+)\s*=\s*([a-z]+)\s',
-                 r'\\context \1 = "\2" ',
-                 str )
+                  r'\\context \1 = "\2" ',
+                  str )
     return str
 
 
 @rule ((2, 3, 24), _ ('''regularize other identifiers'''))
 def conv (str):
     def sub(m):
-       return regularize_id (m.group (1))
+        return regularize_id (m.group (1))
     str = re.sub (r'(maintainer_email|maintainer_web|midi_stuff|gourlay_maxmeasures)',
-                 sub, str)
+                  sub, str)
     return str
 
 
@@ -2089,30 +2089,30 @@ def conv (str):
 @rule ((2, 5, 0), '\\quote -> \\quoteDuring')
 def conv (str):
     str = re.sub (r'\\quote\s+"?([a-zA-Z0-9]+)"?\s+([0-9.*/]+)',
-                 r'\\quoteDuring #"\1" { \skip \2 }',
-                 str)
+                  r'\\quoteDuring #"\1" { \skip \2 }',
+                  str)
     return str
 
 
 @rule ((2, 5, 1), 'ly:import-module -> ly:module-copy')
 def conv (str):
     str = re.sub (r'ly:import-module',
-                 r'ly:module-copy', str)
+                  r'ly:module-copy', str)
     return str
 
 
 @rule ((2, 5, 2), '\markup .. < .. > .. -> \markup .. { .. } ..')
 def conv (str):
     str = re.sub (r'\\(column|fill-line|dir-column|center-align|right-align|left-align|bracketed-y-column)\s*<(([^>]|<[^>]*>)*)>',
-                 r'\\\1 {\2}', str)
+                  r'\\\1 {\2}', str)
     str = re.sub (r'\\(column|fill-line|dir-column|center-align|right-align|left-align|bracketed-y-column)\s*<(([^>]|<[^>]*>)*)>',
-                 r'\\\1 {\2}', str)
+                  r'\\\1 {\2}', str)
     str = re.sub (r'\\(column|fill-line|dir-column|center-align|right-align|left-align|bracketed-y-column)\s*<(([^>]|<[^>]*>)*)>',
-                 r'\\\1 {\2}', str)
+                  r'\\\1 {\2}', str)
     def get_markup (m):
-       s = m.group (0)
-       s = re.sub (r'''((\\"|})\s*){''', '\2 \\line {', s)
-       return s
+        s = m.group (0)
+        s = re.sub (r'''((\\"|})\s*){''', '\2 \\line {', s)
+        return s
     str = re.sub (r'\\markup\s*{([^}]|{[^}]*})*}', get_markup, str)
     return str
 
@@ -2129,7 +2129,7 @@ def conv (str):
 @rule ((2, 5, 12), '\set Slur #\'dashed = #X -> \slurDashed')
 def conv (str):
     str = re.sub (r"\\override\s+(Voice\.)?Slur #'dashed\s*=\s*#\d*(\.\d+)?",
-                 r"\\slurDashed", str)
+                  r"\\slurDashed", str)
     return str
 
 
@@ -2137,29 +2137,29 @@ def conv (str):
 def conv (str):
     input_encoding = 'latin1'
     def func (match):
-       encoding = match.group (1)
-
-       # FIXME: automatic recoding of other than latin1?
-       if encoding == 'latin1':
-           return match.group (2)
-
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % ("\\encoding: %s" % encoding))
-       stderr_write ('\n')
-       stderr_write (_ ("LilyPond source must be UTF-8"))
-       stderr_write ('\n')
-       if encoding == 'TeX':
-           stderr_write (_ ("Try the texstrings backend"))
-           stderr_write ('\n')
-       else:
-           stderr_write ( _("Do something like: %s") % \
-                              ("recode %s..utf-8 FILE" % encoding))
-           stderr_write ('\n')
-       stderr_write (_ ("Or save as UTF-8 in your editor"))
-       stderr_write ('\n')
-       raise FatalConversionError ()
-
-       return match.group (0)
+        encoding = match.group (1)
+
+        # FIXME: automatic recoding of other than latin1?
+        if encoding == 'latin1':
+            return match.group (2)
+
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % ("\\encoding: %s" % encoding))
+        stderr_write ('\n')
+        stderr_write (_ ("LilyPond source must be UTF-8"))
+        stderr_write ('\n')
+        if encoding == 'TeX':
+            stderr_write (_ ("Try the texstrings backend"))
+            stderr_write ('\n')
+        else:
+            stderr_write ( _("Do something like: %s") % \
+                               ("recode %s..utf-8 FILE" % encoding))
+            stderr_write ('\n')
+        stderr_write (_ ("Or save as UTF-8 in your editor"))
+        stderr_write ('\n')
+        raise FatalConversionError ()
+
+        return match.group (0)
 
     str = re.sub (r'\\encoding\s+"?([a-zA-Z0-9]+)"?(\s+)', func, str)
 
@@ -2169,16 +2169,16 @@ def conv (str):
     de_input = codecs.getdecoder (input_encoding)
     en_utf_8 = codecs.getencoder ('utf_8')
     try:
-       de_ascii (str)
+        de_ascii (str)
     # only in python >= 2.3
     # except UnicodeDecodeError:
     except UnicodeError:
-       # do not re-recode UTF-8 input
-       try:
-           de_utf_8 (str)
-       #except UnicodeDecodeError:
-       except UnicodeError:
-           str = en_utf_8 (de_input (str)[0])[0]
+        # do not re-recode UTF-8 input
+        try:
+            de_utf_8 (str)
+        #except UnicodeDecodeError:
+        except UnicodeError:
+            str = en_utf_8 (de_input (str)[0])[0]
 
 
 
@@ -2189,17 +2189,17 @@ def conv (str):
 @rule ((2, 5, 17), _ ('remove %s') % 'ly:stencil-set-extent!')
 def conv (str):
     if re.search ("ly:stencil-set-extent!", str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "ly:stencil-set-extent!")
-       stderr_write ('\n')
-       stderr_write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
-       raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "ly:stencil-set-extent!")
+        stderr_write ('\n')
+        stderr_write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
+        raise FatalConversionError ()
     if re.search ("ly:stencil-align-to!", str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % "ly:stencil-align-to!")
-       stderr_write ('\n')
-       stderr_write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
-       raise FatalConversionError ()
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % "ly:stencil-align-to!")
+        stderr_write ('\n')
+        stderr_write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
+        raise FatalConversionError ()
     return str
 
 
@@ -2213,16 +2213,16 @@ def conv (str):
 def conv (str):
     if re.search ("(override-|revert-)auto-beam-setting", str)\
        or re.search ("autoBeamSettings", str):
-       stderr_write ('\n')
-       stderr_write (NOT_SMART % _ ("auto beam settings"))
-       stderr_write ('\n')
-       stderr_write (_ ('''
+        stderr_write ('\n')
+        stderr_write (NOT_SMART % _ ("auto beam settings"))
+        stderr_write ('\n')
+        stderr_write (_ ('''
 Auto beam settings must now specify each interesting moment in a measure
 explicitly; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.
 '''))
-       stderr_write (UPDATE_MANUALLY)
-       stderr_write ('\n')
-       raise FatalConversionError ()
+        stderr_write (UPDATE_MANUALLY)
+        stderr_write ('\n')
+        raise FatalConversionError ()
     return str
 
 
@@ -2251,8 +2251,8 @@ def conv (str):
     str = re.sub('ly:parser-define', 'ly:parser-define!', str)
     str = re.sub('excentricity', 'eccentricity', str)
     str = re.sub(r'\\(consists|remove) *"?Timing_engraver"?',
-                r'\\\1 "Timing_translator" \\\1 "Default_bar_line_engraver"',
-                str)
+                 r'\\\1 "Timing_translator" \\\1 "Default_bar_line_engraver"',
+                 str)
     return str
 
 
@@ -2274,11 +2274,11 @@ def conv (str):
     str = re.sub('Performer_group_performer', 'Performer_group', str)
     str = re.sub('Engraver_group_engraver', 'Engraver_group', str)
     str = re.sub (r"#'inside-slur\s*=\s*##t *",
-                 r"#'avoid-slur = #'inside ", str)
+                  r"#'avoid-slur = #'inside ", str)
     str = re.sub (r"#'inside-slur\s*=\s*##f *",
-                 r"#'avoid-slur = #'around ", str)
+                  r"#'avoid-slur = #'around ", str)
     str = re.sub (r"#'inside-slur",
-                 r"#'avoid-slur", str)
+                  r"#'avoid-slur", str)
     return str
 
 
@@ -2306,70 +2306,70 @@ def conv (str):
 @rule ((2, 7, 13), 'layout engine refactoring [FIXME]')
 def conv (str):
     def subber (match):
-       newkey = {'spacing-procedure': 'springs-and-rods',
-                 'after-line-breaking-callback' : 'after-line-breaking',
-                 'before-line-breaking-callback' : 'before-line-breaking',
-                 'print-function' : 'stencil'} [match.group(3)]
-       what = match.group (1)
-       grob = match.group (2)
-
-       if what == 'revert':
-           return "revert %s #'callbacks %% %s\n" % (grob, newkey)
-       elif what == 'override':
-           return "override %s #'callbacks #'%s" % (grob, newkey)
-       else:
-           raise 'urg'
-           return ''
+        newkey = {'spacing-procedure': 'springs-and-rods',
+                  'after-line-breaking-callback' : 'after-line-breaking',
+                  'before-line-breaking-callback' : 'before-line-breaking',
+                  'print-function' : 'stencil'} [match.group(3)]
+        what = match.group (1)
+        grob = match.group (2)
+
+        if what == 'revert':
+            return "revert %s #'callbacks %% %s\n" % (grob, newkey)
+        elif what == 'override':
+            return "override %s #'callbacks #'%s" % (grob, newkey)
+        else:
+            raise 'urg'
+            return ''
 
     str = re.sub(r"(override|revert)\s*([a-zA-Z.]+)\s*#'(spacing-procedure|after-line-breaking-callback"
-               + r"|before-line-breaking-callback|print-function)",
-               subber, str)
+                + r"|before-line-breaking-callback|print-function)",
+                subber, str)
 
     if re.search ('bar-size-procedure', str):
-       stderr_write (NOT_SMART % "bar-size-procedure")
+        stderr_write (NOT_SMART % "bar-size-procedure")
     if re.search ('space-function', str):
-       stderr_write (NOT_SMART % "space-function")
+        stderr_write (NOT_SMART % "space-function")
     if re.search ('verticalAlignmentChildCallback', str):
-       stderr_write (_ ('verticalAlignmentChildCallback has been deprecated'))
+        stderr_write (_ ('verticalAlignmentChildCallback has been deprecated'))
     return str
 
 
 @rule ((2, 7, 14), _ ('Remove callbacks property, deprecate XY-extent-callback.'))
 def conv (str):
     str = re.sub (r"\\override +([A-Z.a-z]+) #'callbacks",
-                 r"\\override \1", str)
+                  r"\\override \1", str)
     str = re.sub (r"\\revert ([A-Z.a-z]+) #'callbacks % ([a-zA-Z]+)",
-                 r"\\revert \1 #'\2", str)
+                  r"\\revert \1 #'\2", str)
     str = re.sub (r"([XY]-extent)-callback", r'\1', str)
     str = re.sub (r"RemoveEmptyVerticalGroup", "VerticalAxisGroup", str)
     str = re.sub (r"\\set ([a-zA-Z]*\.?)minimumVerticalExtent",
-                 r"\\override \1VerticalAxisGroup #'minimum-Y-extent",
-                 str)
+                  r"\\override \1VerticalAxisGroup #'minimum-Y-extent",
+                  str)
     str = re.sub (r"minimumVerticalExtent",
-                 r"\\override VerticalAxisGroup #'minimum-Y-extent",
-                 str)
+                  r"\\override VerticalAxisGroup #'minimum-Y-extent",
+                  str)
     str = re.sub (r"\\set ([a-zA-Z]*\.?)extraVerticalExtent",
-                 r"\\override \1VerticalAxisGroup #'extra-Y-extent", str)
+                  r"\\override \1VerticalAxisGroup #'extra-Y-extent", str)
     str = re.sub (r"\\set ([a-zA-Z]*\.?)verticalExtent",
-                 r"\\override \1VerticalAxisGroup #'Y-extent", str)
+                  r"\\override \1VerticalAxisGroup #'Y-extent", str)
     return str
 
 
 @rule ((2, 7, 15), _ ('Use grob closures iso. XY-offset-callbacks.'))
 def conv (str):
     if re.search ('[XY]-offset-callbacks', str):
-       stderr_write (NOT_SMART % "[XY]-offset-callbacks")
+        stderr_write (NOT_SMART % "[XY]-offset-callbacks")
     if re.search ('position-callbacks', str):
-       stderr_write (NOT_SMART % "position-callbacks")
+        stderr_write (NOT_SMART % "position-callbacks")
     return str
 
 
 @rule ((2, 7, 22), r"\tag #'(a b) -> \tag #'a \tag #'b")
 def conv (str):
     def sub_syms (m):
-       syms =  m.group (1).split ()
-       tags = ["\\tag #'%s" % s for s in syms]
-       return ' '.join (tags)
+        syms =  m.group (1).split ()
+        tags = ["\\tag #'%s" % s for s in syms]
+        return ' '.join (tags)
 
     str = re.sub (r"\\tag #'\(([^)]+)\)",  sub_syms, str)
     return str
@@ -2378,8 +2378,8 @@ def conv (str):
 @rule ((2, 7, 24), _ ('deprecate %s') % 'number-visibility')
 def conv (str):
     str = re.sub (r"#'number-visibility",
-                 "#'number-visibility % number-visibility is deprecated. Tune the TupletNumber instead\n",
-                 str)
+                  "#'number-visibility % number-visibility is deprecated. Tune the TupletNumber instead\n",
+                  str)
     return str
 
 
@@ -2393,10 +2393,10 @@ def conv (str):
 def conv (str):
     for a in ['beamed-lengths', 'beamed-minimum-free-lengths',
               'lengths',
-             'beamed-extreme-minimum-free-lengths']:
-       str = re.sub (r"\\override\s+Stem\s+#'%s" % a,
-                     r"\\override Stem #'details #'%s" % a,
-                     str)
+              'beamed-extreme-minimum-free-lengths']:
+        str = re.sub (r"\\override\s+Stem\s+#'%s" % a,
+                      r"\\override Stem #'details #'%s" % a,
+                      str)
     return str
 
 
@@ -2409,55 +2409,55 @@ def conv (str):
 @rule ((2, 7, 31), "Foo_bar::bla_bla -> ly:foo-bar::bla-bla")
 def conv (str):
     def sub_cxx_id (m):
-       str = m.group(1)
-       return 'ly:' + str.lower ().replace ('_','-')
+        str = m.group(1)
+        return 'ly:' + str.lower ().replace ('_','-')
 
     str = re.sub (r'([A-Z][a-z_0-9]+::[a-z_0-9]+)',
-                 sub_cxx_id, str)
+                  sub_cxx_id, str)
     return str
 
 
 @rule ((2, 7, 32), _ ("foobar -> foo-bar for \paper, \layout"))
 def conv (str):
     identifier_subs = [
-           ('inputencoding', 'input-encoding'),
-           ('printpagenumber', 'print-page-number'),
-           ('outputscale', 'output-scale'),
-           ('betweensystemspace', 'between-system-space'),
-           ('betweensystempadding', 'between-system-padding'),
-           ('pagetopspace', 'page-top-space'),
-           ('raggedlastbottom', 'ragged-last-bottom'),
-           ('raggedright', 'ragged-right'),
-           ('raggedlast', 'ragged-last'),
-           ('raggedbottom', 'ragged-bottom'),
-           ('aftertitlespace', 'after-title-space'),
-           ('beforetitlespace', 'before-title-space'),
-           ('betweentitlespace', 'between-title-space'),
-           ('topmargin', 'top-margin'),
-           ('bottommargin', 'bottom-margin'),
-           ('headsep', 'head-separation'),
-           ('footsep', 'foot-separation'),
-           ('rightmargin', 'right-margin'),
-           ('leftmargin', 'left-margin'),
-           ('printfirstpagenumber', 'print-first-page-number'),
-           ('firstpagenumber', 'first-page-number'),
-           ('hsize', 'paper-width'),
-           ('vsize', 'paper-height'),
-           ('horizontalshift', 'horizontal-shift'),
-           ('staffspace', 'staff-space'),
-           ('linethickness', 'line-thickness'),
-           ('ledgerlinethickness', 'ledger-line-thickness'),
-           ('blotdiameter', 'blot-diameter'),
-           ('staffheight', 'staff-height'),
-           ('linewidth', 'line-width'),
-           ('annotatespacing', 'annotate-spacing')
-           ]
+            ('inputencoding', 'input-encoding'),
+            ('printpagenumber', 'print-page-number'),
+            ('outputscale', 'output-scale'),
+            ('betweensystemspace', 'between-system-space'),
+            ('betweensystempadding', 'between-system-padding'),
+            ('pagetopspace', 'page-top-space'),
+            ('raggedlastbottom', 'ragged-last-bottom'),
+            ('raggedright', 'ragged-right'),
+            ('raggedlast', 'ragged-last'),
+            ('raggedbottom', 'ragged-bottom'),
+            ('aftertitlespace', 'after-title-space'),
+            ('beforetitlespace', 'before-title-space'),
+            ('betweentitlespace', 'between-title-space'),
+            ('topmargin', 'top-margin'),
+            ('bottommargin', 'bottom-margin'),
+            ('headsep', 'head-separation'),
+            ('footsep', 'foot-separation'),
+            ('rightmargin', 'right-margin'),
+            ('leftmargin', 'left-margin'),
+            ('printfirstpagenumber', 'print-first-page-number'),
+            ('firstpagenumber', 'first-page-number'),
+            ('hsize', 'paper-width'),
+            ('vsize', 'paper-height'),
+            ('horizontalshift', 'horizontal-shift'),
+            ('staffspace', 'staff-space'),
+            ('linethickness', 'line-thickness'),
+            ('ledgerlinethickness', 'ledger-line-thickness'),
+            ('blotdiameter', 'blot-diameter'),
+            ('staffheight', 'staff-height'),
+            ('linewidth', 'line-width'),
+            ('annotatespacing', 'annotate-spacing')
+            ]
 
     for (a,b)  in identifier_subs:
-       ### for C++:
-       ## str = re.sub ('"%s"' % a, '"%s"' b, str)
+        ### for C++:
+        ## str = re.sub ('"%s"' % a, '"%s"' b, str)
 
-       str = re.sub (a, b, str)
+        str = re.sub (a, b, str)
     return str
 
 
@@ -2477,9 +2477,9 @@ def conv (str):
 @rule ((2, 7, 40), "rehearsalMarkAlignSymbol/barNumberAlignSymbol -> break-align-symbol")
 def conv (str):
     str = re.sub (r'\\set\s+Score\s*\.\s*barNumberAlignSymbol\s*=',
-                 r"\\override Score.BarNumber #'break-align-symbol = ", str)
+                  r"\\override Score.BarNumber #'break-align-symbol = ", str)
     str = re.sub (r'\\set\s*Score\s*\.\s*rehearsalMarkAlignSymbol\s*=',
-                 r"\\override Score.RehearsalMark #'break-align-symbol = ", str)
+                  r"\\override Score.RehearsalMark #'break-align-symbol = ", str)
     return str
 
 
@@ -2514,7 +2514,7 @@ def conv (str):
 
     if re.search ('tupletNumberFormatFunction', str):
         stderr_write ("\n")
-       stderr_write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
+        stderr_write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
         stderr_write ("\n")
     return str
 
@@ -2648,8 +2648,8 @@ def conv (str):
                   str)
 
     if re.search ('edge-text', str):
-       stderr_write (NOT_SMART % _ ("edge-text settings for TextSpanner."))
-       stderr_write (_ ("Use\n\n%s") %
+        stderr_write (NOT_SMART % _ ("edge-text settings for TextSpanner."))
+        stderr_write (_ ("Use\n\n%s") %
                           "\t\\override TextSpanner #'bound-details #'right #'text = <right-text>\n"
                           "\t\\override TextSpanner #'bound-details #'left #'text = <left-text>\n")
     return str
@@ -2702,9 +2702,9 @@ def conv (str):
                   r"scripts.caesura.curved", str)
 
     if re.search ('dash-fraction', str):
-       stderr_write (NOT_SMART % _ ("all settings related to dashed lines.\n"))
-       stderr_write (_ ("Use \\override ... #'style = #'line for solid lines and\n"))
-       stderr_write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines."))
+        stderr_write (NOT_SMART % _ ("all settings related to dashed lines.\n"))
+        stderr_write (_ ("Use \\override ... #'style = #'line for solid lines and\n"))
+        stderr_write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines."))
     return str
 
 
@@ -2745,8 +2745,8 @@ fret diagram properties moved to fret-diagram-details."))
 def conv (str):
     ## warning 1/2: metronomeMarkFormatter uses text markup as second argument
     if re.search ('metronomeMarkFormatter', str):
-       stderr_write (NOT_SMART % _ ("metronomeMarkFormatter got an additional text argument.\n"))
-       stderr_write (_ ("The function assigned to Score.metronomeMarkFunction now uses the signature\n%s") %
+        stderr_write (NOT_SMART % _ ("metronomeMarkFormatter got an additional text argument.\n"))
+        stderr_write (_ ("The function assigned to Score.metronomeMarkFunction now uses the signature\n%s") %
                           "\t(format-metronome-markup text dur count context)\n")
 
     ## warning 2/2: fret diagram properties moved to fret-diagram-details
@@ -2809,9 +2809,9 @@ def conv (str):
 def conv (str):
     str = re.sub (r"#\(set-octavation (-*[0-9]+)\)", r"\\ottava #\1", str)
     if re.search ('put-adjacent', str):
-       stderr_write (NOT_SMART % _ ("\\put-adjacent argument order.\n"))
-       stderr_write (_ ("Axis and direction now come before markups:\n"))
-       stderr_write (_ ("\\put-adjacent axis dir markup markup."))
+        stderr_write (NOT_SMART % _ ("\\put-adjacent argument order.\n"))
+        stderr_write (_ ("Axis and direction now come before markups:\n"))
+        stderr_write (_ ("\\put-adjacent axis dir markup markup."))
     return str
 
 @rule ((2, 11, 57), "\\center-align -> \\center-column, \\hcenter -> \\center-align")
@@ -3018,7 +3018,7 @@ def conv (str):
 \"accordion.accEtcbase\" -> \"accordion.etcbass\""))
 def conv(str):
     def sub_acc (m):
-       d = {
+        d = {
             'Dot': 'dot',
             'Discant': 'discant',
             'Bayanbase': 'bayanbass',
@@ -3026,10 +3026,10 @@ def conv(str):
             'Freebase': 'freebass',
             'OldEE': 'oldEE'
             }
-       return '"accordion.%s"' %  d[m.group (1)]
+        return '"accordion.%s"' %  d[m.group (1)]
 
     str = re.sub (r'"accordion\.acc([a-zA-Z]+)"',
-                 sub_acc, str)
+                  sub_acc, str)
     if re.search(r'overrideBeamSettings', str):
         stderr_write("\n")
         stderr_write(NOT_SMART % _("\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"))
@@ -3122,11 +3122,11 @@ def conv(str):
     str = re.sub (r'\(space\s+\.\s+([0-9]*\.?[0-9]*)\)', r'(basic-distance . \1)', str)
     str = re.sub (r"#'space\s+=\s+#?([0-9]*\.?[0-9]*)", r"#'basic-distance = #\1", str)
     if re.search (r'HarmonicParenthesesItem', str):
-       stderr_write ("\n")
-       stderr_write (NOT_SMART % ("HarmonicParenthesesItem.\n"))
-       stderr_write (_ ("HarmonicParenthesesItem has been eliminated.\n"))
-       stderr_write (_ ("Harmonic parentheses are part of the TabNoteHead grob.\n"))
-       stderr_write (UPDATE_MANUALLY);
+        stderr_write ("\n")
+        stderr_write (NOT_SMART % ("HarmonicParenthesesItem.\n"))
+        stderr_write (_ ("HarmonicParenthesesItem has been eliminated.\n"))
+        stderr_write (_ ("Harmonic parentheses are part of the TabNoteHead grob.\n"))
+        stderr_write (UPDATE_MANUALLY);
     return str
 
 @rule ((2, 13, 44),
@@ -3143,28 +3143,28 @@ def conv(str):
 
 def conv(str):
     def semitones2pitch(semitones):
-       steps = [0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6]
-       alterations = ["NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL", "NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL"]
-       octave = 0
-       while semitones > 11:
-           octave += 1
-           semitones -=12
-       while semitones < 0:
-           octave -= 1
-           semitones += 12
-       pitchArgs = "%d %d %s" % (octave, steps[semitones], alterations[semitones])
-       return pitchArgs
+        steps = [0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6]
+        alterations = ["NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL", "NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL"]
+        octave = 0
+        while semitones > 11:
+            octave += 1
+            semitones -=12
+        while semitones < 0:
+            octave -= 1
+            semitones += 12
+        pitchArgs = "%d %d %s" % (octave, steps[semitones], alterations[semitones])
+        return pitchArgs
 
     def convert_tones (semitone_list):
-       tones = semitone_list.split ()
-       res = ""
-       for tone in tones:
-           args = semitones2pitch(int(tone))
-           res += ",(ly:make-pitch " + args + ") "
-       return res
+        tones = semitone_list.split ()
+        res = ""
+        for tone in tones:
+            args = semitones2pitch(int(tone))
+            res += ",(ly:make-pitch " + args + ") "
+        return res
 
     def new_tunings (matchobj):
-       return "stringTunings = #`(" + convert_tones(matchobj.group(1)) + ")"
+        return "stringTunings = #`(" + convert_tones(matchobj.group(1)) + ")"
     str = re.sub (r"stringTunings\s*=\s*#'\(([\d\s-]*)\)", \
           new_tunings , str)
 
@@ -3196,10 +3196,10 @@ def conv(str):
 @rule ((2, 13, 51),
     _ ("Woodwind diagrams: Changes to the clarinet diagram."))
 def conv(str):
-    if re.search(r'\\woodwind-diagram\s*#[^#]*clarinet\s', str):
-        stderr_write("\n")
-        stderr_write(NOT_SMART % _("woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"))
-        stderr_write(UPDATE_MANUALLY)
+    if re.search (r'\\woodwind-diagram\s*#[^#]*clarinet\s', str):
+        stderr_write ("\n")
+        stderr_write (NOT_SMART % _("woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"))
+        stderr_write (UPDATE_MANUALLY)
     return str
 
 @rule ((2, 14, 0),
@@ -3207,6 +3207,23 @@ def conv(str):
 def conv (str):
     return str
 
+@rule ((2, 15, 2),
+       _ ("Change in internal property for MultiMeasureRest"))
+def conv (str):
+    if re.search (r'use-breve-rest',str):
+        stderr_write (NOT_SMART % _("use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"))
+        stderr_write (UPDATE_MANUALLY)
+    return str
+
+@rule ((2, 15, 7),
+    _ ("Handling of non-automatic footnotes."))
+def conv(str):
+    if re.search (r'\\footnote', str):
+        stderr_write ("\n")
+        stderr_write (NOT_SMART % _("If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"))
+        stderr_write (UPDATE_MANUALLY)
+    return str
+
 
 # Guidelines to write rules (please keep this at the end of this file)
 #
index ee9505f37f8eaa7c4c8094d11c538cdfd84f4d10..1677b558dea23023c4ee14e7134d663758f24e4d 100644 (file)
@@ -16,73 +16,73 @@ try:
     _ = gettext.gettext
 except:
     def _ (s):
-       return s
+        return s
 
 def scan_files (files):
     file_of_font_dict = {}
     for f in files:
-       if verbose:
-           sys.stderr.write (_('Scanning %s') % f + '\n')
+        if verbose:
+            sys.stderr.write (_('Scanning %s') % f + '\n')
 
-       header = open (f, 'r').read ()
-       idx = 0
+        header = open (f, 'r').read ()
+        idx = 0
 
-       extract_from_this = []
-       while idx < len (header):
-           match = dsr_font_regex.search (header[idx:])
-           if not match:
-               break
-           name = match.group (1)
-           idx += match.end (1)
-           if file_of_font_dict.has_key (name):
-               continue
+        extract_from_this = []
+        while idx < len (header):
+            match = dsr_font_regex.search (header[idx:])
+            if not match:
+                break
+            name = match.group (1)
+            idx += match.end (1)
+            if file_of_font_dict.has_key (name):
+                continue
 
-           file_of_font_dict[name] = f
+            file_of_font_dict[name] = f
 
     return file_of_font_dict
 
 def get_file_fonts_dict (file_of_font_dict):
     dict = {}
     for (n, f) in file_of_font_dict.items ():
-       if not dict.has_key (f):
-           dict[f] = []
+        if not dict.has_key (f):
+            dict[f] = []
 
-       dict[f].append (n)
+        dict[f].append (n)
 
     return dict
 
 def extract_fonts_from_file (extract_from_this, font_dict, filename):
     if extract_from_this:
-       curr_font = []
-       curr_font_name = []
-       in_font = 0
-       for l in open (filename).readlines ():
-           if not in_font and begin_font_regex.match (l):
-               in_font = 1
-               curr_font_name = begin_font_regex.match (l).group (1)
-               curr_font = []
-           elif in_font and end_font_regex.match (l):
-               in_font = 0
-
-               if curr_font_name in extract_from_this:
-                   font_dict[curr_font_name] = ''.join (curr_font)
-                   if verbose:
-                       sys.stderr.write (_('Extracted %s')
-                                         % curr_font_name + '\n')
-
-                   extract_from_this.remove (curr_font_name)
-           elif in_font:
-               curr_font.append (l)
-           if not extract_from_this:
-               break
-
-       if extract_from_this:
-           sys.stderr.write ("Failed to extract %s from %s\n"
-                             % (', '.join (extract_from_this), filename))
+        curr_font = []
+        curr_font_name = []
+        in_font = 0
+        for l in open (filename).readlines ():
+            if not in_font and begin_font_regex.match (l):
+                in_font = 1
+                curr_font_name = begin_font_regex.match (l).group (1)
+                curr_font = []
+            elif in_font and end_font_regex.match (l):
+                in_font = 0
+
+                if curr_font_name in extract_from_this:
+                    font_dict[curr_font_name] = ''.join (curr_font)
+                    if verbose:
+                        sys.stderr.write (_('Extracted %s')
+                                          % curr_font_name + '\n')
+
+                    extract_from_this.remove (curr_font_name)
+            elif in_font:
+                curr_font.append (l)
+            if not extract_from_this:
+                break
+
+        if extract_from_this:
+            sys.stderr.write ("Failed to extract %s from %s\n"
+                              % (', '.join (extract_from_this), filename))
 
 def write_extracted_fonts (output_file_name, font_dict):
     if verbose:
-       sys.stderr.write( _('Writing fonts to %s') % output_file_name + '\n')
+        sys.stderr.write( _('Writing fonts to %s') % output_file_name + '\n')
     output = open (output_file_name, 'w')
     output.write ('''%!PS-Adobe-3.0
 %%VMusage: 0 0 
@@ -90,14 +90,14 @@ def write_extracted_fonts (output_file_name, font_dict):
 ''')
 
     for x in font_dict.keys ():
-       output.write ('%%%%DocumentSuppliedResources: font %s\n' % x)
+        output.write ('%%%%DocumentSuppliedResources: font %s\n' % x)
 
     output.write ('''%%EndComments\n''')
 
     for (k,v) in font_dict.items ():
-       output.write ('\n%%%%BeginFont: %s\n' % k)
-       output.write (v)
-       output.write ('\n%%EndFont')
+        output.write ('\n%%%%BeginFont: %s\n' % k)
+        output.write (v)
+        output.write ('\n%%EndFont')
 
 
 def extract_fonts (output_file_name, input_files):
@@ -106,7 +106,7 @@ def extract_fonts (output_file_name, input_files):
 
     font_dict = {}
     for (file, fonts) in ff.items ():
-       extract_fonts_from_file (fonts, font_dict, file)
+        extract_fonts_from_file (fonts, font_dict, file)
 
     write_extracted_fonts (output_file_name, font_dict)
 
index 6fb96bbbf59959fccdc19a15cd846785a5befb0a..c3eb98bc6fda38f815b5bc9ebf8d41f91dd46a85 100644 (file)
@@ -23,6 +23,7 @@ import re
 import shutil
 import sys
 import optparse
+import time
 
 ################################################################
 # Users of python modules should include this snippet
@@ -41,7 +42,7 @@ try:
     _ = t.ugettext
 except:
     def _ (s):
-       return s
+        return s
 underscore = _
 
 # Urg, Python 2.4 does not define stderr/stdout encoding
@@ -118,6 +119,7 @@ def subprocess_system (cmd,
                        ignore_error=False,
                        progress_p=True,
                        be_verbose=False,
+                       redirect_output=False,
                        log_file=None):
     import subprocess
 
@@ -125,46 +127,61 @@ def subprocess_system (cmd,
     name = command_name (cmd)
     error_log_file = ''
 
-    if be_verbose:
-       show_progress = 1
-       progress (_ ("Invoking `%s\'") % cmd)
+    if redirect_output:
+        progress (_ ("Processing %s.ly") % log_file)
     else:
-       progress ( _("Running %s...") % name)
-
+        if be_verbose:
+            show_progress = 1
+            progress (_ ("Invoking `%s\'") % cmd)
+        else:
+            progress ( _("Running %s...") % name)
 
     stdout_setting = None
+    stderr_setting = None
     if not show_progress:
-       stdout_setting = subprocess.PIPE
+        stdout_setting = subprocess.PIPE
+
+    if redirect_output:
+        stdout_filename = ' '.join([log_file, '.log'])
+        stderr_filename = ' '.join([log_file, '.err.log'])
+        stdout_setting = open(stdout_filename, 'w')
+        stderr_setting = open(stderr_filename, 'w')
 
     proc = subprocess.Popen (cmd,
-                            shell=True,
-                            universal_newlines=True,
-                            stdout=stdout_setting,
-                            stderr=stdout_setting)
+                             shell=True,
+                             universal_newlines=True,
+                             stdout=stdout_setting,
+                             stderr=stderr_setting)
 
     log = ''
 
-    if show_progress:
-       retval = proc.wait()
+    if redirect_output:
+        while proc.poll()==None:
+            time.sleep(1)
+        retval = proc.returncode
+        stdout_setting.close()
+        stderr_setting.close()
     else:
-       log = proc.communicate ()
-       retval = proc.returncode
-
+        if show_progress:
+            retval = proc.wait()
+        else:
+            log = proc.communicate ()
+            retval = proc.returncode
 
     if retval:
-       print >>sys.stderr, 'command failed:', cmd
-       if retval < 0:
-           print >>sys.stderr, "Child was terminated by signal", -retval
-       elif retval > 0:
-           print >>sys.stderr, "Child returned", retval
-
-       if ignore_error:
-           print >>sys.stderr, "Error ignored"
-       else:
-           if not show_progress:
-               print log[0]
-               print log[1]
-           sys.exit (1)
+        print >>sys.stderr, 'command failed:', cmd
+        if retval < 0:
+            print >>sys.stderr, "Child was terminated by signal", -retval
+        elif retval > 0:
+            print >>sys.stderr, "Child returned", retval
+
+        if ignore_error:
+            print >>sys.stderr, "Error ignored"
+        else:
+            if not show_progress:
+                print log[0]
+                print log[1]
+            sys.exit (1)
 
     return abs (retval)
 
@@ -177,23 +194,23 @@ def ossystem_system (cmd,
 
     name = command_name (cmd)
     if be_verbose:
-       show_progress = 1
-       progress (_ ("Invoking `%s\'") % cmd)
+        show_progress = 1
+        progress (_ ("Invoking `%s\'") % cmd)
     else:
-       progress ( _("Running %s...") % name)
+        progress ( _("Running %s...") % name)
 
     retval = os.system (cmd)
     if retval:
-       print >>sys.stderr, 'command failed:', cmd
-       if retval < 0:
-           print >>sys.stderr, "Child was terminated by signal", -retval
-       elif retval > 0:
-           print >>sys.stderr, "Child returned", retval
+        print >>sys.stderr, 'command failed:', cmd
+        if retval < 0:
+            print >>sys.stderr, "Child was terminated by signal", -retval
+        elif retval > 0:
+            print >>sys.stderr, "Child returned", retval
 
-       if ignore_error:
-           print >>sys.stderr, "Error ignored"
-       else:
-           sys.exit (1)
+        if ignore_error:
+            print >>sys.stderr, "Error ignored"
+        else:
+            sys.exit (1)
 
     return abs (retval)
 
@@ -207,7 +224,7 @@ if sys.platform == 'mingw32':
 def strip_extension (f, ext):
     (p, e) = os.path.splitext (f)
     if e == ext:
-       e = ''
+        e = ''
     return p + e
 
 
@@ -215,34 +232,34 @@ def search_exe_path (name):
     p = os.environ['PATH']
     exe_paths = p.split (':')
     for e in exe_paths:
-       full = os.path.join (e, name)
-       if os.path.exists (full):
-           return full
+        full = os.path.join (e, name)
+        if os.path.exists (full):
+            return full
     return None
 
 
 def print_environment ():
     for (k,v) in os.environ.items ():
-       sys.stderr.write ("%s=\"%s\"\n" % (k, v))
+        sys.stderr.write ("%s=\"%s\"\n" % (k, v))
 
 class NonDentedHeadingFormatter (optparse.IndentedHelpFormatter):
     def format_heading(self, heading):
-       if heading:
-           return heading[0].upper() + heading[1:] + ':\n'
-       return ''
+        if heading:
+            return heading[0].upper() + heading[1:] + ':\n'
+        return ''
     def format_option_strings(self, option):
-       sep = ' '
-       if option._short_opts and option._long_opts:
-           sep = ','
+        sep = ' '
+        if option._short_opts and option._long_opts:
+            sep = ','
 
-       metavar = ''
-       if option.takes_value():
-           metavar = '=%s' % option.metavar or option.dest.upper()
+        metavar = ''
+        if option.takes_value():
+            metavar = '=%s' % option.metavar or option.dest.upper()
 
-       return "%3s%s %s%s" % (" ".join (option._short_opts),
-                              sep,
-                              " ".join (option._long_opts),
-                              metavar)
+        return "%3s%s %s%s" % (" ".join (option._short_opts),
+                               sep,
+                               " ".join (option._long_opts),
+                               metavar)
 
     # Only use one level of indentation (even for groups and nested groups),
     # since we don't indent the headeings, either
@@ -259,7 +276,7 @@ class NonDentedHeadingFormatter (optparse.IndentedHelpFormatter):
         return _("Usage: %s") % usage + '\n'
 
     def format_description(self, description):
-       return description
+        return description
 
 def get_option_parser (*args, **kwargs):
     p = optparse.OptionParser (*args, **kwargs)
index be3c61ca8f99a9bc4cf0ba8d7d0c992826359eba..3a38efafdbca7c272565fef2b9ce0b8719869452 100644 (file)
@@ -48,32 +48,32 @@ def interpret_alter_element (alter_elm):
 
 class Xml_node:
     def __init__ (self):
-       self._children = []
-       self._data = None
-       self._original = None
-       self._name = 'xml_node'
-       self._parent = None
+        self._children = []
+        self._data = None
+        self._original = None
+        self._name = 'xml_node'
+        self._parent = None
         self._attribute_dict = {}
         
     def get_parent (self):
         return self._parent
     
     def is_first (self):
-       return self._parent.get_typed_children (self.__class__)[0] == self
+        return self._parent.get_typed_children (self.__class__)[0] == self
 
     def original (self):
-       return self._original 
+        return self._original
     def get_name (self):
-       return self._name
+        return self._name
 
     def get_text (self):
-       if self._data:
-           return self._data
+        if self._data:
+            return self._data
 
-       if not self._children:
-           return ''
+        if not self._children:
+            return ''
 
-       return ''.join ([c.get_text () for c in self._children])
+        return ''.join ([c.get_text () for c in self._children])
 
     def message (self, msg):
         ly.stderr_write (msg+'\n')
@@ -102,36 +102,36 @@ class Xml_node:
             return [c for c in self._children if isinstance(c, klass)]
 
     def get_named_children (self, nm):
-       return self.get_typed_children (get_class (nm))
+        return self.get_typed_children (get_class (nm))
 
     def get_named_child (self, nm):
-       return self.get_maybe_exist_named_child (nm)
+        return self.get_maybe_exist_named_child (nm)
 
     def get_children (self, predicate):
-       return [c for c in self._children if predicate(c)]
+        return [c for c in self._children if predicate(c)]
 
     def get_all_children (self):
-       return self._children
+        return self._children
 
     def get_maybe_exist_named_child (self, name):
-       return self.get_maybe_exist_typed_child (get_class (name))
+        return self.get_maybe_exist_typed_child (get_class (name))
 
     def get_maybe_exist_typed_child (self, klass):
-       cn = self.get_typed_children (klass)
-       if len (cn)==0:
-           return None
-       elif len (cn) == 1:
-           return cn[0]
-       else:
-           raise "More than 1 child", klass
+        cn = self.get_typed_children (klass)
+        if len (cn)==0:
+            return None
+        elif len (cn) == 1:
+            return cn[0]
+        else:
+            raise "More than 1 child", klass
 
     def get_unique_typed_child (self, klass):
-       cn = self.get_typed_children(klass)
-       if len (cn) <> 1:
-           sys.stderr.write (self.__dict__ + '\n')
-           raise 'Child is not unique for', (klass, 'found', cn)
+        cn = self.get_typed_children(klass)
+        if len (cn) <> 1:
+            sys.stderr.write (self.__dict__ + '\n')
+            raise 'Child is not unique for', (klass, 'found', cn)
 
-       return cn[0]
+        return cn[0]
 
     def get_named_child_value_number (self, name, default):
         n = self.get_maybe_exist_named_child (name)
@@ -143,9 +143,9 @@ class Xml_node:
 
 class Music_xml_node (Xml_node):
     def __init__ (self):
-       Xml_node.__init__ (self)
-       self.duration = Rational (0)
-       self.start = Rational (0)
+        Xml_node.__init__ (self)
+        self.duration = Rational (0)
+        self.start = Rational (0)
 
 class Work (Xml_node):
     def get_work_information (self, tag):
@@ -239,8 +239,8 @@ class Identification (Xml_node):
 
 class Duration (Music_xml_node):
     def get_length (self):
-       dur = int (self.get_text ()) * Rational (1,4)
-       return dur
+        dur = int (self.get_text ()) * Rational (1,4)
+        return dur
 
 class Hash_comment (Music_xml_node):
     pass
@@ -250,73 +250,73 @@ class Hash_text (Music_xml_node):
 
 class Pitch (Music_xml_node):
     def get_step (self):
-       ch = self.get_unique_typed_child (get_class (u'step'))
-       step = ch.get_text ().strip ()
-       return step
+        ch = self.get_unique_typed_child (get_class (u'step'))
+        step = ch.get_text ().strip ()
+        return step
     def get_octave (self):
-       ch = self.get_unique_typed_child (get_class (u'octave'))
-       octave = ch.get_text ().strip ()
-       return int (octave)
+        ch = self.get_unique_typed_child (get_class (u'octave'))
+        octave = ch.get_text ().strip ()
+        return int (octave)
 
     def get_alteration (self):
-       ch = self.get_maybe_exist_typed_child (get_class (u'alter'))
-       return interpret_alter_element (ch)
+        ch = self.get_maybe_exist_typed_child (get_class (u'alter'))
+        return interpret_alter_element (ch)
 
 class Unpitched (Music_xml_node):
     def get_step (self):
-       ch = self.get_unique_typed_child (get_class (u'display-step'))
-       step = ch.get_text ().strip ()
-       return step
+        ch = self.get_unique_typed_child (get_class (u'display-step'))
+        step = ch.get_text ().strip ()
+        return step
 
     def get_octave (self):
-       ch = self.get_unique_typed_child (get_class (u'display-octave'))
+        ch = self.get_unique_typed_child (get_class (u'display-octave'))
 
-       if ch:
-           octave = ch.get_text ().strip ()
-           return int (octave)
-       else:
-           return None
+        if ch:
+            octave = ch.get_text ().strip ()
+            return int (octave)
+        else:
+            return None
 
 class Measure_element (Music_xml_node):
     def get_voice_id (self):
-       voice_id = self.get_maybe_exist_named_child ('voice')
-       if voice_id:
-           return voice_id.get_text ()
-       else:
-           return None
+        voice_id = self.get_maybe_exist_named_child ('voice')
+        if voice_id:
+            return voice_id.get_text ()
+        else:
+            return None
 
     def is_first (self):
         # Look at all measure elements (previously we had self.__class__, which
         # only looked at objects of the same type!
-       cn = self._parent.get_typed_children (Measure_element)
+        cn = self._parent.get_typed_children (Measure_element)
         # But only look at the correct voice; But include Attributes, too, which
         # are not tied to any particular voice
-       cn = [c for c in cn if (c.get_voice_id () == self.get_voice_id ()) or isinstance (c, Attributes)]
-       return cn[0] == self
+        cn = [c for c in cn if (c.get_voice_id () == self.get_voice_id ()) or isinstance (c, Attributes)]
+        return cn[0] == self
 
 class Attributes (Measure_element):
     def __init__ (self):
-       Measure_element.__init__ (self)
-       self._dict = {}
+        Measure_element.__init__ (self)
+        self._dict = {}
         self._original_tag = None
         self._time_signature_cache = None
 
     def is_first (self):
-       cn = self._parent.get_typed_children (self.__class__)
+        cn = self._parent.get_typed_children (self.__class__)
         if self._original_tag:
             return cn[0] == self._original_tag
         else:
             return cn[0] == self
     
     def set_attributes_from_previous (self, dict):
-       self._dict.update (dict)
+        self._dict.update (dict)
         
     def read_self (self):
-       for c in self.get_all_children ():
-           self._dict[c.get_name()] = c
+        for c in self.get_all_children ():
+            self._dict[c.get_name()] = c
 
     def get_named_attribute (self, name):
-       return self._dict.get (name)
+        return self._dict.get (name)
         
     def single_time_sig_to_fraction (self, sig):
         if len (sig) < 2:
@@ -472,9 +472,9 @@ class Note (Measure_element):
         if ch:
             log = ch.get_text ().strip()
             return musicxml_duration_to_log (log)
-       elif self.get_maybe_exist_named_child (u'grace'):
-           # FIXME: is it ok to default to eight note for grace notes?
-           return 3
+        elif self.get_maybe_exist_named_child (u'grace'):
+            # FIXME: is it ok to default to eight note for grace notes?
+            return 3
         else:
             return None
     
@@ -532,7 +532,7 @@ class Measure (Music_xml_node):
     def is_implicit (self):
         return hasattr (self, 'implicit') and self.implicit == 'yes'
     def get_notes (self):
-       return self.get_typed_children (get_class (u'note'))
+        return self.get_typed_children (get_class (u'note'))
 
 class Syllabic (Music_xml_node):
     def continued (self):
@@ -554,21 +554,21 @@ class Lyric (Music_xml_node):
 
 class Musicxml_voice:
     def __init__ (self):
-       self._elements = []
-       self._staves = {}
-       self._start_staff = None
+        self._elements = []
+        self._staves = {}
+        self._start_staff = None
         self._lyrics = []
         self._has_lyrics = False
 
     def add_element (self, e):
-       self._elements.append (e)
-       if (isinstance (e, Note)
-           and e.get_maybe_exist_typed_child (Staff)):
-           name = e.get_maybe_exist_typed_child (Staff).get_text ()
+        self._elements.append (e)
+        if (isinstance (e, Note)
+            and e.get_maybe_exist_typed_child (Staff)):
+            name = e.get_maybe_exist_typed_child (Staff).get_text ()
 
-           if not self._start_staff and not e.get_maybe_exist_typed_child (Grace):
-               self._start_staff = name
-           self._staves[name] = True
+            if not self._start_staff and not e.get_maybe_exist_typed_child (Grace):
+                self._start_staff = name
+            self._staves[name] = True
 
         lyrics = e.get_typed_children (Lyric)
         if not self._has_lyrics:
@@ -580,7 +580,7 @@ class Musicxml_voice:
                 self._lyrics.append (nr)
 
     def insert (self, idx, e):
-       self._elements.insert (idx, e)
+        self._elements.insert (idx, e)
 
     def get_lyrics_numbers (self):
         if (len (self._lyrics) == 0) and self._has_lyrics:
@@ -600,7 +600,7 @@ def graces_to_aftergraces (pending_graces):
 class Part (Music_xml_node):
     def __init__ (self):
         Music_xml_node.__init__ (self)
-       self._voices = {}
+        self._voices = {}
         self._staff_attributes_dict = {}
 
     def get_part_list (self):
@@ -611,16 +611,16 @@ class Part (Music_xml_node):
         return n.get_named_child ('part-list')
        
     def interpret (self):
-       """Set durations and starting points."""
+        """Set durations and starting points."""
         """The starting point of the very first note is 0!"""
         
         part_list = self.get_part_list ()
         
-       now = Rational (0)
-       factor = Rational (1)
-       attributes_dict = {}
+        now = Rational (0)
+        factor = Rational (1)
+        attributes_dict = {}
         attributes_object = None
-       measures = self.get_typed_children (Measure)
+        measures = self.get_typed_children (Measure)
         last_moment = Rational (-1)
         last_measure_position = Rational (-1)
         measure_position = Rational (0)
@@ -630,7 +630,7 @@ class Part (Music_xml_node):
         # Graces at the end of a measure need to have their position set to the
         # previous number!
         pending_graces = []
-       for m in measures:
+        for m in measures:
             # implicit measures are used for artificial measures, e.g. when
             # a repeat bar line splits a bar into two halves. In this case,
             # don't reset the measure position to 0. They are also used for
@@ -665,32 +665,32 @@ class Part (Music_xml_node):
 
                 if isinstance (n, Hash_text):
                     continue
-               dur = Rational (0)
+                dur = Rational (0)
 
                 if n.__class__ == Attributes:
-                   n.set_attributes_from_previous (attributes_dict)
-                   n.read_self ()
-                   attributes_dict = n._dict.copy ()
+                    n.set_attributes_from_previous (attributes_dict)
+                    n.read_self ()
+                    attributes_dict = n._dict.copy ()
                     attributes_object = n
                     
-                   factor = Rational (1,
-                                      int (attributes_dict.get ('divisions').get_text ()))
+                    factor = Rational (1,
+                                       int (attributes_dict.get ('divisions').get_text ()))
 
                 
-               if (n.get_maybe_exist_typed_child (Duration)):
-                   mxl_dur = n.get_maybe_exist_typed_child (Duration)
-                   dur = mxl_dur.get_length () * factor
+                if (n.get_maybe_exist_typed_child (Duration)):
+                    mxl_dur = n.get_maybe_exist_typed_child (Duration)
+                    dur = mxl_dur.get_length () * factor
                     
-                   if n.get_name() == 'backup':
-                       dur = - dur
+                    if n.get_name() == 'backup':
+                        dur = - dur
                         # reset all graces before the backup to after-graces:
                         graces_to_aftergraces (pending_graces)
                         pending_graces = []
-                   if n.get_maybe_exist_typed_child (Grace):
-                       dur = Rational (0)
+                    if n.get_maybe_exist_typed_child (Grace):
+                        dur = Rational (0)
 
                     rest = n.get_maybe_exist_typed_child (Rest)
-                   if (rest
+                    if (rest
                         and attributes_object
                         and attributes_object.get_measure_length () == dur):
 
@@ -772,13 +772,13 @@ class Part (Music_xml_node):
             return attributes
 
     def extract_voices (part):
-       voices = {}
-       measures = part.get_typed_children (Measure)
-       elements = []
-       for m in measures:
+        voices = {}
+        measures = part.get_typed_children (Measure)
+        elements = []
+        for m in measures:
             if m.partial > 0:
                 elements.append (Partial (m.partial))
-           elements.extend (m.get_all_children ())
+            elements.extend (m.get_all_children ())
         # make sure we know all voices already so that dynamics, clefs, etc.
         # can be assigned to the correct voices
         voice_to_staff_dict = {}
@@ -813,11 +813,11 @@ class Part (Music_xml_node):
                 staff_to_voice_dict[s].append (v)
 
 
-       start_attr = None
+        start_attr = None
         assign_to_next_note = []
         id = None
-       for n in elements:
-           voice_id = n.get_maybe_exist_typed_child (get_class ('voice'))
+        for n in elements:
+            voice_id = n.get_maybe_exist_typed_child (get_class ('voice'))
             if voice_id:
                 id = voice_id.get_text ()
             else:
@@ -826,18 +826,18 @@ class Part (Music_xml_node):
             # We don't need backup/forward any more, since we have already 
             # assigned the correct onset times. 
             # TODO: Let Grouping through. Also: link, print, bokmark sound
-           if not (isinstance (n, Note) or isinstance (n, Attributes) or
+            if not (isinstance (n, Note) or isinstance (n, Attributes) or
                     isinstance (n, Direction) or isinstance (n, Partial) or
                     isinstance (n, Barline) or isinstance (n, Harmony) or
                     isinstance (n, FiguredBass) or isinstance (n, Print)):
-               continue
+                continue
 
-           if isinstance (n, Attributes) and not start_attr:
-               start_attr = n
-               continue
+            if isinstance (n, Attributes) and not start_attr:
+                start_attr = n
+                continue
 
             if isinstance (n, Attributes):
-                # assign these only to the voices they really belongs to!
+                # assign these only to the voices they really belong to!
                 for (s, vids) in staff_to_voice_dict.items ():
                     staff_attributes = part.extract_attributes_for_staff (n, s)
                     if staff_attributes:
@@ -883,7 +883,7 @@ class Part (Music_xml_node):
             voices[id].add_element (i)
         assign_to_next_note = []
 
-       if start_attr:
+        if start_attr:
             for (s, vids) in staff_to_voice_dict.items ():
                 staff_attributes = part.extract_attributes_for_staff (start_attr, s)
                 staff_attributes.read_self ()
@@ -895,27 +895,27 @@ class Part (Music_xml_node):
         part._voices = voices
 
     def get_voices (self):
-       return self._voices
+        return self._voices
     def get_staff_attributes (self):
         return self._staff_attributes_dict
 
 class Notations (Music_xml_node):
     def get_tie (self):
-       ts = self.get_named_children ('tied')
-       starts = [t for t in ts if t.type == 'start']
-       if starts:
-           return starts[0]
-       else:
-           return None
+        ts = self.get_named_children ('tied')
+        starts = [t for t in ts if t.type == 'start']
+        if starts:
+            return starts[0]
+        else:
+            return None
 
     def get_tuplets (self):
-       return self.get_typed_children (Tuplet)
+        return self.get_typed_children (Tuplet)
 
 class Time_modification(Music_xml_node):
     def get_fraction (self):
-       b = self.get_maybe_exist_named_child ('actual-notes')
-       a = self.get_maybe_exist_named_child ('normal-notes')
-       return (int(a.get_text ()), int (b.get_text ()))
+        b = self.get_maybe_exist_named_child ('actual-notes')
+        a = self.get_maybe_exist_named_child ('normal-notes')
+        return (int(a.get_text ()), int (b.get_text ()))
 
     def get_normal_type (self):
         tuplet_type = self.get_maybe_exist_named_child ('normal-type')
@@ -929,9 +929,9 @@ class Time_modification(Music_xml_node):
 
 class Accidental (Music_xml_node):
     def __init__ (self):
-       Music_xml_node.__init__ (self)
-       self.editorial = False
-       self.cautionary = False
+        Music_xml_node.__init__ (self)
+        self.editorial = False
+        self.cautionary = False
 
 class Music_xml_spanner (Music_xml_node):
     def get_type (self):
@@ -992,11 +992,11 @@ class Dashes (Music_xml_spanner):
 
 class Slur (Music_xml_spanner):
     def get_type (self):
-       return self.type
+        return self.type
 
 class Beam (Music_xml_spanner):
     def get_type (self):
-       return self.get_text ()
+        return self.get_text ()
     def is_primary (self):
         if hasattr (self, 'number'):
             return self.number == "1"
@@ -1159,63 +1159,63 @@ class Print (Music_xml_node):
 ## for every input file. Only add those classes, that are either directly
 ## used by class name or extend Music_xml_node in some way!
 class_dict = {
-       '#comment': Hash_comment,
+        '#comment': Hash_comment,
         '#text': Hash_text,
-       'accidental': Accidental,
-       'attributes': Attributes,
+        'accidental': Accidental,
+        'attributes': Attributes,
         'barline': Barline,
         'bar-style': BarStyle,
         'bass': Bass,
-       'beam' : Beam,
+        'beam' : Beam,
         'beats': Beats,
         'beat-type': BeatType,
         'beat-unit': BeatUnit,
         'beat-unit-dot': BeatUnitDot,
         'bend' : Bend,
         'bracket' : Bracket,
-       'chord': Chord,
+        'chord': Chord,
         'dashes' : Dashes,
         'degree' : ChordModification,
-       'dot': Dot,
-       'direction': Direction,
+        'dot': Dot,
+        'direction': Direction,
         'direction-type': DirType,
-       'duration': Duration,
+        'duration': Duration,
         'elision': Elision,
         'extend': Extend,
         'frame': Frame,
         'frame-note': Frame_Note,
         'figured-bass': FiguredBass,
         'glissando': Glissando,
-       'grace': Grace,
+        'grace': Grace,
         'harmony': Harmony,
         'identification': Identification,
         'key-alter': KeyAlter,
         'key-octave': KeyOctave,
         'key-step': KeyStep,
         'lyric': Lyric,
-       'measure': Measure,
-       'notations': Notations,
-       'note': Note,
+        'measure': Measure,
+        'notations': Notations,
+        'note': Note,
         'octave-shift': Octave_shift,
-       'part': Part,
+        'part': Part,
     'part-group': Part_group,
-       'part-list': Part_list,
+        'part-list': Part_list,
         'pedal': Pedal,
         'per-minute': PerMinute,
-       'pitch': Pitch,
+        'pitch': Pitch,
         'print': Print,
-       'rest': Rest,
+        'rest': Rest,
         'root': Root,
         'score-part': Score_part,
         'slide': Slide,
-       'slur': Slur,
-       'staff': Staff,
+        'slur': Slur,
+        'staff': Staff,
         'syllabic': Syllabic,
         'text': Text,
-       'time-modification': Time_modification,
+        'time-modification': Time_modification,
         'tuplet': Tuplet,
-       'type': Type,
-       'unpitched': Unpitched,
+        'type': Type,
+        'unpitched': Unpitched,
         'wavy-line': Wavy_line,
         'wedge': Wedge,
         'words': Words,
@@ -1234,9 +1234,9 @@ def get_class (name):
     if classname:
         return classname
     else:
-       class_name = name2class_name (name)
-       klass = new.classobj (class_name, (Music_xml_node,) , {})
-       class_dict[name] = klass
+        class_name = name2class_name (name)
+        klass = new.classobj (class_name, (Music_xml_node,) , {})
+        class_dict[name] = klass
         return klass
         
 def lxml_demarshal_node (node):
@@ -1255,7 +1255,7 @@ def lxml_demarshal_node (node):
     py_node._children = filter (lambda x: x, py_node._children)
     
     for c in py_node._children:
-       c._parent = py_node
+        c._parent = py_node
 
     for (k, v) in node.items ():
         py_node.__dict__[k] = v
@@ -1271,16 +1271,16 @@ def minidom_demarshal_node (node):
     py_node._name = name
     py_node._children = [minidom_demarshal_node (cn) for cn in node.childNodes]
     for c in py_node._children:
-       c._parent = py_node
+        c._parent = py_node
 
     if node.attributes:
-       for (nm, value) in node.attributes.items ():
-           py_node.__dict__[nm] = value
+        for (nm, value) in node.attributes.items ():
+            py_node.__dict__[nm] = value
             py_node._attribute_dict[nm] = value
             
     py_node._data = None
     if node.nodeType == node.TEXT_NODE and node.data:
-       py_node._data = node.data 
+        py_node._data = node.data
 
     py_node._original = node
     return py_node
index 5a9ee629b3bcdc56328f9ecc9b9a4951d4fabe56..f2d8360fb8004e4eb1b67ba8bec768dad08e2cd8 100644 (file)
@@ -51,10 +51,10 @@ class Rational(object):
            self._d = -self._d
 
     def numerator(self):
-       return self._n
+        return self._n
 
     def denominator(self):
-       return self._d
+        return self._d
 
     def __repr__(self):
         if self._d == 1:
index 706bccb2de51a29a565501f9c8bbb29975b52fd5..93cd2c02d8b3e2ce30f38c851f7f5d06547f6edb 100644 (file)
         (base (dir-basename filename ".ps" ".eps"))
         (intermediate (remove (lambda (x) (member x formats)) completed)))
     (for-each (lambda (f)
-               ((eval (string->symbol (format "convert-to-~a" f))
+               ((eval (string->symbol (format #f "convert-to-~a" f))
                       module) paper-book filename)) completed)
     (if (ly:get-option 'delete-intermediate-files)
        (for-each (lambda (f)
index a7090de0327ff19fbd57c011ff33f5d4ac695f0d..735b9c78956e4e602f41478525379bb344880232 100644 (file)
@@ -123,6 +123,11 @@ accidentals)."
  "A key cancellation."
  '())
 
+(ly:add-interface
+ 'ligature-head-interface
+ "A note head that can become part of a ligature."
+ '())
+
 (ly:add-interface
  'ligature-bracket-interface
  "A bracket indicating a ligature in the original edition."
index 7fd0b138190bf35f20d9fcec62934c92af86839b..3f9da21f6d0c7e71b4aa172f3f30677b4d7b72bd 100644 (file)
@@ -696,6 +696,10 @@ of an object (e.g., between note and its accidentals).")
      (rotation ,list? "Number of degrees to rotate this object, and
 what point to rotate around.  For example, @code{#'(45 0 0)} rotates
 by 45 degrees around the center of this object.")
+     (round-to-longer-rest ,boolean? "Displays the longer multi-measure
+rest when the length of a measure is between two values of
+@code{usable-duration-logs}.  For example, displays a breve instead of a whole
+in a 3/2 measure.")
 
 
 ;;
@@ -731,6 +735,8 @@ placed vertically.")
      (side-relative-direction ,ly:dir? "Multiply direction of
 @code{direction-source} with this to get the direction of this
 object.")
+     (simple-Y ,boolean? "Should the Y placement of a spanner
+disregard changes in system heights?")
      (size ,number? "Size of object, relative to standard size.")
      (skyline-horizontal-padding ,number? "For determining the
 vertical distance between two staves, it is possible to have a
@@ -771,6 +777,7 @@ override:
 @example
 \\override MultiMeasureRest #'spacing-pair = #'(staff-bar . staff-bar)
 @end example")
+     (spanner-id ,string? "An identifier to distinguish concurrent spanners.")
      (springs-and-rods ,boolean? "Dummy variable for triggering
 spacing routines.")
      (stacking-dir ,ly:dir? "Stack objects in which direction?")
@@ -834,6 +841,8 @@ the @code{staff-staff-spacing} property of the staff's
 structure.")
      (stem-attachment ,number-pair? "An @code{(@var{x} . @var{y})}
 pair where the stem attaches to the notehead.")
+     (stem-begin-position ,number? "Where does the stem begin (the
+position of the support-head)?")
      (stem-end-position ,number? "Where does the stem end (the end is
 opposite to the support-head)?")
      ;;[TODO: doco]
@@ -897,6 +906,8 @@ proportionally to their 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
+can be used in typesetting the grob.")
 
 
 ;;
@@ -1047,6 +1058,8 @@ grobs.")
      (spacing-wishes ,ly:grob-array? "An array of note spacing or staff spacing
 objects.")
      (span-start ,boolean? "Is the note head at the start of a spanner?")
+     (spanner-broken ,boolean? "Indicates whether spanner
+alignment should be broken after the current spanner.")
      (spanner-placement ,ly:dir? "The place of an annotation on a spanner.
 LEFT is for the first spanner, and RIGHT is for the last.  CENTER will
 place it on the broken spanner that falls closest to the center of the length
@@ -1123,8 +1136,6 @@ Internally used to distribute beam shortening over stems.")
      (system-Y-offset ,number? "The Y-offset (relative to the bottom of the
 top-margin of the page) of the system to which this staff belongs.")
 
-     (use-breve-rest ,boolean? "Use breve rests for measures longer
-than a whole rest.")
 
      ;;;;;;;;;;;;;;;;
      ;; ancient notation
index 84c3f72f8fbb72c715ebab652bd81c2780b31998..4545e5bd9f6f7c130267397d3947812e31c82881 100644 (file)
        (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
        (stencil . ,ly:balloon-interface::print)
        (text . ,(grob::calc-property-by-copy 'text))
+       (X-extent . #f)
        (Y-extent . #f)
        (X-offset . ,(grob::calc-property-by-copy 'X-offset))
        (Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
        (spanner-placement . ,LEFT)
        (stencil . ,ly:balloon-interface::print-spanner)
        (text . ,(grob::calc-property-by-copy 'text))
+       (X-extent . #f)
        (Y-extent . #f)
        (X-offset . ,(grob::calc-property-by-copy 'X-offset))
        (Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
        (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
        (normalized-endpoints . ,ly:spanner::calc-normalized-endpoints)
        (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+       (simple-Y . #t)
        (stencil . ,ly:line-spanner::print)
        (style . line)
        (X-extent . #f)
        (self-alignment-X . ,LEFT)
        (break-align-symbols . (time-signature))
        (non-break-align-symbols . (multi-measure-rest-interface))
-       (non-musical . #t)
        (meta . ((class . Item)
                 (interfaces . (break-alignable-interface
                                font-interface
        (staff-position . 0)
        (stencil . ,ly:multi-measure-rest::print)
        (thick-thickness . 6.6)
+       ;; See Wanske pp. 125
+       (usable-duration-logs . (0 -1 -2 -3))
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        (meta . ((class . Spanner)
                 (interfaces . (font-interface
                 (interfaces . (font-interface
                                gregorian-ligature-interface
                                ledgered-interface
+                                ligature-head-interface
                                mensural-ligature-interface
                                note-head-interface
                                rhythmic-grob-interface
        (height-limit . 2.0)
        (minimum-length . 1.5)
        (ratio . 0.333)
+       (spanner-id . "")
        (springs-and-rods . ,ly:spanner::set-spacing-rods)
        (stencil . ,ly:slur::print)
        (thickness . 1.1)
        (line-thickness . 0.8)
        (minimum-length . 1.5)
        (ratio . 0.25)
+       (spanner-id . "")
        (springs-and-rods . ,ly:spanner::set-spacing-rods)
        (stencil . ,ly:slur::print)
        (thickness . 1.2)
        (length . ,ly:stem::calc-length)
        (neutral-direction . ,DOWN)
        (positioning-done . ,ly:stem::calc-positioning-done)
+       (stem-begin-position . ,ly:stem::calc-stem-begin-position)
        (stem-end-position . ,ly:stem::calc-stem-end-position)
        (stem-info . ,ly:stem::calc-stem-info)
        (stencil . ,ly:stem::print)
        (stencil . ,ly:stem-tremolo::print)
        (style . ,ly:stem-tremolo::calc-style)
        (X-extent . ,ly:stem-tremolo::width)
-       (Y-extent . ,ly:stem-tremolo::height)
        (meta . ((class . Item)
                 (interfaces . (stem-tremolo-interface))))))
 
      . (
        (avoid-slur . inside)
        (cross-staff . ,ly:tuplet-number::calc-cross-staff)
+       (direction . ,tuplet-number::calc-direction)
        (font-shape . italic)
        (font-size . -2)
        (stencil . ,ly:tuplet-number::print)
     (,ly:arpeggio::brew-chord-bracket . ,ly:arpeggio::pure-height)
     (,ly:arpeggio::brew-chord-slur . ,ly:arpeggio::pure-height)
     (,ly:hairpin::print . ,ly:hairpin::pure-height)
+    (,ly:stem-tremolo::print . ,ly:stem-tremolo::pure-height)
     (,ly:volta-bracket-interface::print . ,volta-bracket-interface::pure-height)))
 
 ;; ly:grob::stencil-extent is safe if the print callback is safe too
index 3e8953afdf88f2f8e155c2f646dd59648c5d39e5..38bf9623dc2167ade13f8b23459c70bbdb1eb842 100644 (file)
@@ -684,7 +684,7 @@ rings = \\markup {
   ;; FIXME
   (ly:make-stencil
    (list 'embedded-ps
-        (format "
+        (format #f "
 gsave currentpoint translate
 0.1 setlinewidth
  ~a
@@ -1485,8 +1485,10 @@ setting of the @code{direction} layout property.
 (define (general-column align-dir baseline mols)
   "Stack @var{mols} vertically, aligned to  @var{align-dir} horizontally."
 
-  (let* ((aligned-mols (map (lambda (x) (ly:stencil-aligned-to x X align-dir)) mols)))
-    (stack-lines -1 0.0 baseline aligned-mols)))
+  (let* ((aligned-mols (map (lambda (x) (ly:stencil-aligned-to x X align-dir)) mols))
+         (stacked-stencil (stack-lines -1 0.0 baseline aligned-mols))
+         (stacked-extent (ly:stencil-extent stacked-stencil X)))
+    (ly:stencil-translate-axis stacked-stencil (- (car stacked-extent)) X )))
 
 (define-markup-command (center-column layout props args)
   (markup-list?)
@@ -1895,16 +1897,77 @@ returns an empty markup.
 (define-markup-command (footnote layout props mkup note)
   (markup? markup?)
   #:category other
-  "Have footnote @var{note} act as an annotation to the markup @var{mkup}."
-  (ly:stencil-combine-at-edge
-    (interpret-markup layout props mkup)
-    X
-    RIGHT
+  #:properties ((raise 0.5)
+                (padding 0.0))
+  "Have footnote @var{note} act as an annotation to the markup @var{mkup}.
+
+@lilypond[verbatim,quote]
+\\markup {
+  \\footnote a b
+  \\override #'(padding . 0.2)
+  \\footnote c d
+}
+@end lilypond"
+  (let* ((markup-stencil (interpret-markup layout props mkup))
+         (auto-numbering (ly:output-def-lookup layout
+                                               'footnote-auto-numbering))
+         (footnote-hash (gensym "footnote"))
+         (stencil-seed 0)
+         (gauge-stencil (if auto-numbering
+                            (interpret-markup
+                              layout
+                              props
+                              ((ly:output-def-lookup
+                                 layout
+                                 'footnote-numbering-function)
+                                stencil-seed))
+                            empty-stencil))
+         (x-ext (if auto-numbering
+                    (ly:stencil-extent gauge-stencil X)
+                    '(0 . 0)))
+        (y-ext (if auto-numbering
+                    (ly:stencil-extent gauge-stencil Y)
+                    '(0 . 0)))
+         (footnote-number
+           (if auto-numbering
+             `(delay-stencil-evaluation
+                ,(delay
+                  (ly:stencil-expr
+                    (let* ((table
+                            (ly:output-def-lookup layout
+                                                  'number-footnote-table))
+                           (footnote-stencil (if (list? table)
+                                                (assoc-get footnote-hash
+                                                            table)
+                                                empty-stencil))
+                           (footnote-stencil (if (ly:stencil? footnote-stencil)
+                                                 footnote-stencil
+                                                 (begin
+                                                   (ly:programming-error
+"Cannot find correct footnote for a markup object.")
+                                                   empty-stencil)))
+                           (gap (- (interval-length x-ext)
+                                  (interval-length
+                                     (ly:stencil-extent footnote-stencil X))))
+                           (y-trans (- (+ (cdr y-ext)
+                                          raise)
+                                       (cdr (ly:stencil-extent footnote-stencil
+                                                               Y)))))
+                     (ly:stencil-translate footnote-stencil
+                                            (cons gap y-trans))))))
+             '()))
+         (main-stencil (ly:stencil-combine-at-edge
+                         markup-stencil
+                         X
+                         RIGHT
+                         (ly:make-stencil footnote-number x-ext y-ext)
+                         padding)))
+  (ly:stencil-add
+    main-stencil
     (ly:make-stencil
-      `(footnote ,(interpret-markup layout props note))
+      `(footnote ,footnote-hash ,(interpret-markup layout props note))
       '(0 . 0)
-      '(0 . 0))
-    0.0))
+      '(0 . 0)))))
 
 (define-markup-command (override layout props new-prop arg)
   (pair? markup?)
@@ -2655,7 +2718,7 @@ Use the filled head if @var{filled} is specified.
 }
 @end lilypond"
   (let*
-      ((name (format "arrowheads.~a.~a~a"
+      ((name (format #f "arrowheads.~a.~a~a"
                     (if filled
                         "close"
                         "open")
@@ -2969,7 +3032,7 @@ Construct a note symbol, with stem.  By using fractional values for
 @end lilypond"
   (define (get-glyph-name-candidates dir log style)
     (map (lambda (dir-name)
-          (format "noteheads.~a~a" dir-name
+          (format #f "noteheads.~a~a" dir-name
                   (if (and (symbol? style)
                            (not (equal? 'default style)))
                       (select-head-glyph style (min log 2))
@@ -3426,7 +3489,7 @@ a column containing several lines of text.
     (parenthesize-stencil
      markup half-thickness scaled-width angularity padding)))
 
-\f
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Delayed markup evaluation
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -3451,7 +3514,7 @@ when @var{label} is not found."
                       (page-number (if (list? table)
                                        (assoc-get label table)
                                        #f))
-                      (page-markup (if page-number (format "~a" page-number) default))
+                      (page-markup (if page-number (format #f "~a" page-number) default))
                       (page-stencil (interpret-markup layout props page-markup))
                       (gap (- (interval-length x-ext)
                               (interval-length (ly:stencil-extent page-stencil X)))))
index 3ecfce5aaf1cdffce6a962576f3454bb8d996011..f58d60fa35330990983baf421b6183c9efb64de5 100644 (file)
@@ -16,7 +16,8 @@
 ;;;
 (define (scheme-expr->lily-string scm-arg)
   (cond ((or (number? scm-arg)
-            (string? scm-arg))
+             (string? scm-arg)
+             (boolean? scm-arg))
         (format #f "~s" scm-arg))
        ((or (symbol? scm-arg)
             (list? scm-arg))
@@ -466,7 +467,9 @@ Otherwise, return #f."
                 ;; as a note_chord_element to prevent spurious output, e.g.,
                 ;; \displayLilyMusic < c-1\4 >8 -> c-1\48
                 (null? (filter post-event?
-                               (ly:music-property (car simple-elements) 'articulations))))
+                               (ly:music-property (car simple-elements) 'articulations)))
+                ;; same for simple_element with \tweak
+                (null? (ly:music-property (car simple-elements) 'tweaks)))
            ;; simple_element : note | figure | rest | mmrest | lyric_element | skip
            (let* ((simple-element (car simple-elements))
                   (duration (ly:music-property simple-element 'duration))
@@ -853,10 +856,8 @@ Otherwise, return #f."
 
 (define-display-method OverrideProperty (expr parser)
   (let* ((symbol         (ly:music-property expr 'symbol))
-        (property-path   (ly:music-property expr 'grob-property-path))
-        (properties      (if (pair? property-path)
-                             property-path
-                             (list (ly:music-property expr 'grob-property))))
+        (properties   (ly:music-property expr 'grob-property-path
+                                             (list (ly:music-property expr 'grob-property))))
         (value   (ly:music-property expr 'grob-value))
         (once    (ly:music-property expr 'once)))
 
@@ -876,8 +877,9 @@ Otherwise, return #f."
            (new-line->lily-string))))
 
 (define-display-method RevertProperty (expr parser)
-  (let ((symbol (ly:music-property expr 'symbol))
-       (properties (ly:music-property expr 'grob-property-path)))
+  (let* ((symbol (ly:music-property expr 'symbol))
+         (properties (ly:music-property expr 'grob-property-path
+                                             (list (ly:music-property expr 'grob-property)))))
     (format #f "\\revert ~a~a #'~a~a"
            (if (eqv? (*current-context*) 'Bottom)
                ""
index 78a2dec6e1b71a89dd4624e9850180088e04b36b..5e1159363654e42981a8677b67ff785cf91d3dc9 100644 (file)
@@ -41,6 +41,8 @@ this @code{\\lyricsto} section.")
 (with @code{+} sign).")
      (augmented-slash ,boolean? "This figure is for an augmented figured bass
 (back-slashed number).")
+     (autosplit-end ,boolean? "Duration of event was truncated by automatic
+splitting in @code{Completion_heads_engraver}.")
 
      (bass ,boolean? "Set if this note is a bass note in a chord.")
      (beat-structure ,list? "A beatStructure to be used in autobeaming.")
@@ -165,6 +167,7 @@ If zero, signals a beat containing varying durations.")
 Options are @code{'text} and @code{'hairpin}.")
      (span-text ,markup? "The displayed text for dynamic text spanners
 (e.g., cresc.)")
+     (spanner-id ,string? "Identifier to distinguish concurrent spanners.")
      (split-list ,list? "Splitting moments for part combiner.")
      (start-callback ,procedure? "Function to compute the negative length
 of starting grace notes.  This property can only be defined as initializer
index d57cba811816f44214c150b8e781ae403eac8f95..8a3676b2a1ff13a497abe3959238d888bffc1fd6 100644 (file)
@@ -403,6 +403,7 @@ goes down).")
      . ((description . "Start or end phrasing slur.
 
 Syntax: @var{note}@code{\\(} and @var{note}@code{\\)}")
+        (spanner-id . "")
        (types . (general-music span-event event phrasing-slur-event))
        ))
 
@@ -534,6 +535,7 @@ Syntax: @code{\\skip} @var{duration}")
      . ((description . "Start or end slur.
 
 Syntax: @var{note}@code{(} and @var{note}@code{)}")
+        (spanner-id . "")
        (types . (general-music span-event event slur-event))
        ))
 
index 6fc933499df5c0ace9bb92ef2fda02b70d4683d9..302259fa23eda7d78d9704dc87f0c77fa6edbb15 100644 (file)
@@ -79,6 +79,15 @@ display method will be called."
                 (format #f "~a\\tag #'~a" (if post-event? "-" "") tag))
               (ly:music-property expr 'tags))))
 
+(define* (tweaks->lily-string expr #:optional (post-event? #f))
+  (format #f "~{~a ~}"
+          (map (lambda (tweak)
+                 (format #f "~a\\tweak #'~a #~a"
+                         (if post-event? "-" "")
+                         (car tweak)
+                         (scheme-expr->lily-string (cdr tweak))))
+               (ly:music-property expr 'tweaks))))
+
 (define-public (music->lily-string expr parser)
   "Print @var{expr}, a music expression, in LilyPond syntax."
   (if (ly:music? expr)
@@ -90,8 +99,9 @@ display method will be called."
                                              (proc expr parser))
                                            procs))))
        (if result-string
-           (format #f "~a~a" 
-                   (tag->lily-string expr (post-event? expr))
+           (format #f "~a~a~a"
+                    (tag->lily-string expr (post-event? expr))
+                    (tweaks->lily-string expr (post-event? expr))
                    result-string)
            (format #f "%{ Print method not implemented for music type ~a %}"
                    music-type)))
index ffccf72c30e06294902362e10ba4fc4703ac7fc5..b456acf334a14f6a4dc974ae9918813033259d20 100644 (file)
 
        (signature-str
        (string-join
-        (map (lambda (x) (format "@var{~a} (~a)"
+        (map (lambda (x) (format #f "@var{~a} (~a)"
                                  (car x)
                                  (cadr x)))
              (zip arg-names type-names)))))
-    (format
+    (format #f
      "@item @code{~a}~a~a
 @findex ~a
 ~a
@@ -60,7 +60,7 @@
 
 
 (define-public (identifiers-doc-string)
-  (format
+  (format #f
    "@table @asis
 ~a
 @end table
index 3e8c308d5b5a8a9a9657963c1d69e0f88192381c..b6afa8298b982d2468ac99e1c2e272e6370a89ac 100644 (file)
 
       (string-append
        "@item Set "
-       (format "grob-property @code{~a} "
+       (format #f "grob-property @code{~a} "
               (string-join (map symbol->string path) " "))
-       (format "in @ref{~a} to ~a."
+       (format #f "in @ref{~a} to ~a."
               context-sym (scm->texi value))
        "\n")))
      ((equal? (object-property context-sym 'is-grob?) #t) "")
      ((equal? tag 'assign)
-      (format "@item Set translator property @code{~a} to ~a.\n"
+      (format #f "@item Set translator property @code{~a} to ~a.\n"
              context-sym
              (scm->texi (car args))))
      )))
index b71709def4f8c79fd9e41bde5257c01b1e632687..af48e55c6b51a32b40a1f1e223e5ef1daf62e2fb 100644 (file)
@@ -179,6 +179,13 @@ string-to-use).  If QUOTE? is #t, embed table in a @quotation environment."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; property  stuff.
 
+(define (verify-type-name where sym type)
+  (if (eq? type #f)
+      (ly:error (_ "cannot find description for property `~S' (~S)")
+                sym
+                where))
+  (type-name type))
+
 (define (property->texi where sym . rest)
   "Document SYM for WHERE (which can be translation, backend, music),
 with init values from ALIST (1st optional argument)
@@ -190,7 +197,7 @@ with init values from ALIST (1st optional argument)
         (doc-name (string->symbol
                    (string-append (symbol->string where) "-doc")))
         (type (object-property sym type?-name))
-        (typename (type-name type))
+        (typename (verify-type-name where sym type))
         (desc (object-property sym doc-name))
         (init-value (assoc-get sym alist)))
 
index 539e1aaee21ec42d4629a1c391b6db98b15546f1..db07a6d99809759f7d4bd77b26e75b6427f8de18 100644 (file)
@@ -185,7 +185,7 @@ used.  This is used to select the proper design size for the text fonts.
               ,(list->vector
                 (map (lambda (tup)
                        (cons (ly:pt (cdr tup))
-                             (format "~a-~a ~a"
+                             (format #f "~a-~a ~a"
                                      name
                                      (car tup)
                                      (ly:pt (cdr tup)))))
@@ -194,12 +194,12 @@ used.  This is used to select the proper design size for the text fonts.
                ,(list->vector
                  (map (lambda (size-tup)
                         (delay (ly:system-font-load
-                                (format "~a-~a" name (car size-tup)))))
+                                (format #f "~a-~a" name (car size-tup)))))
                       design-size-alist
                       )))
      (fetaBraces ,(ly:pt 20.0)
                 #(,(delay (ly:system-font-load
-                           (format "~a-brace" name)))))
+                           (format #f "~a-brace" name)))))
      )))
                 
 (define-public (add-pango-fonts node lily-family family factor)
index 4ab6e7bdddeb51174af286548e7a7bf63e3363b7..e67f278693325fc1496f68f7b98e33cae349b3d7 100644 (file)
@@ -74,7 +74,7 @@ alignment."
     "Return EPS filename."
     (let* ((stencil (car stencil-count-pair))
           (number (cdr stencil-count-pair))
-          (name (format "~a-~a" basename number)))
+          (name (format #f "~a-~a" basename number)))
       (dump-stencil-as-EPS paper stencil name
                           (ly:get-option 'include-eps-fonts))
       (string-append name ".eps")))
@@ -84,7 +84,7 @@ alignment."
   ;; finally write some auxiliary files if desired
   (dump-infinite-stack-EPS stencils)
   (postprocess-output book framework-eps-module
-                       (format "~a.eps" basename) (ly:output-formats))
+                       (format #f "~a.eps" basename) (ly:output-formats))
 
   ;; individual staves (*-1.eps etc.); only print if more than one stencil
   ;; Otherwise the .eps and the -1.eps file will be identical and waste space
@@ -103,7 +103,7 @@ alignment."
   (if create-aux-files
     (let* ((write-file (lambda (str-port ext)
                         (if create-aux-files
-                          (let* ((name (format "~a-systems.~a" basename ext))
+                          (let* ((name (format #f "~a-systems.~a" basename ext))
                                  (port (open-output-file name)))
                             (ly:message (_ "Writing ~a...") name)
                             (display (get-output-string str-port) port)
@@ -113,22 +113,21 @@ alignment."
           (count-system-port (open-output-string)))
       (for-each (lambda (c)
                  (if (< 0 c)
-                     (display (format
+                     (format tex-system-port
                                "\\ifx\\betweenLilyPondSystem \\undefined
   \\linebreak
 \\else
   \\expandafter\\betweenLilyPondSystem{~a}%
 \\fi
-" c)
-                              tex-system-port))
-                 (display (format "\\includegraphics{~a-~a}%\n"
-                                  basename (1+ c)) tex-system-port)
-                 (display (format "@image{~a-~a}\n"
-                                  basename (1+ c)) texi-system-port))
+" c))
+                 (format tex-system-port "\\includegraphics{~a-~a}%\n"
+                                  basename (1+ c))
+                 (format texi-system-port "@image{~a-~a}\n"
+                                  basename (1+ c)))
                (iota (length stencils)))
       (display "@c eof\n" texi-system-port)
       (display "% eof\n" tex-system-port)
-      (display (format "~a" (length stencils)) count-system-port)
+      (format count-system-port "~a" (length stencils))
       (write-file texi-system-port "texi")
       (write-file tex-system-port "tex")
       ;; do this as the last action so we know the rest is complete if
index 7c44920d67ef05e33cd35d1720036a5bc7777a97..e58b422b90ec58a6015f2ef30ef86bf7201b14f7 100644 (file)
@@ -90,7 +90,7 @@
   (ly:outputter-dump-string
    outputter
    (string-append
-    (format "%%Page: ~a ~a\n" page-number page-number)
+    (format #f "%%Page: ~a ~a\n" page-number page-number)
     "%%BeginPageSetup\n"
     (if landscape?
        "page-width output-scale lily-output-units mul mul 0 translate 90 rotate\n"
         (names (apply append (map extract-names fonts))))
     (apply string-append
           (map (lambda (f)
-                 (format
+                 (format #f
                   (if load-fonts?
                       "%%DocumentSuppliedResources: font ~a\n"
                       "%%DocumentNeededResources: font ~a\n")
                 "%%EndComments\n"))
 
 (define (procset file-name)
-  (format
+  (format #f
    "%%BeginResource: procset (~a) 1 0
 ~a
 %%EndResource
    file-name (cached-file-contents file-name)))
 
 (define (embed-document file-name)
-  (format "%%BeginDocument: ~a
+  (format #f "%%BeginDocument: ~a
 ~a
 %%EndDocument
 "
 (define-public (ps-embed-cff body font-set-name version)
   (let* ((binary-data
          (string-append
-          (format "/~a ~s StartData " font-set-name (string-length body))
+          (format #f "/~a ~s StartData " font-set-name (string-length body))
           body))
         (header
-         (format
+         (format #f
           "%%BeginResource: font ~a
 %!PS-Adobe-3.0 Resource-FontSet
 %%DocumentNeededResources: ProcSet (FontSetInit)
              (begin
                (set! file-name (ly:string-substitute (ly:get-option 'datadir)
                                                      "" file-name))
-               (format
+               (format #f
                 "lilypond-datadir (~a) concatstrings (r) file .loadfont\n"
                 file-name))
-             (format "(~a) (r) file .loadfont\n" file-name))
-         (format "% cannot find font file: ~a\n" file-name)))
+             (format #f "(~a) (r) file .loadfont\n" file-name))
+         (format #f "% cannot find font file: ~a\n" file-name)))
 
     (let* ((font (car font-name-filename))
           (name (cadr font-name-filename))
                (cond
                 ((internal-font? file-name)
                  (ps-load-file (ly:find-file
-                                (format "~a.otf" file-name))))
+                                (format #f "~a.otf" file-name))))
                 ((string? bare-file-name)
                  (ps-load-file file-name))
                 (else
 
 
 (define-public (output-framework basename book scopes fields)
-  (let* ((filename (format "~a.ps" basename))
+  (let* ((filename (format #f "~a.ps" basename))
         (outputter (ly:make-paper-outputter
                     ;; FIXME: better wrap open/open-file,
                     ;; content-mangling is always bad.
                     ;; FIXME: better wrap open/open-file,
                     ;; content-mangling is always bad.
                     ;; MINGW hack: need to have "b"inary for embedding CFFs
-                    (open-file (format "~a.eps" filename) "wb")
+                    (open-file (format #f "~a.eps" filename) "wb")
                     'ps))
         (port (ly:outputter-port outputter))
         (rounded-bbox (to-rounded-bp-box bbox))
              (bbox (list (car xext) (car yext)
                          (cdr xext) (cdr yext)))
              (filename (if (< 0 count)
-                           (format "~a-~a" basename count)
+                           (format #f "~a-~a" basename count)
                            basename)))
         (set! count (1+ count))
         (dump-stencil-as-EPS-with-bbox paper
                                        (ly:get-option 'include-eps-fonts)
                                        bbox)
         (if do-pdf
-            (postscript->pdf 0 0 (format "~a.eps" filename)))
+            (postscript->pdf 0 0 (format #f "~a.eps" filename)))
         (if do-png
             (postscript->png (ly:get-option 'resolution) 0 0
-                             (format "~a.eps" filename)))))
+                             (format #f "~a.eps" filename)))))
      extents-system-pairs)))
 
 (define-public (clip-system-EPSes basename paper-book)
       (for-each
        (lambda (region)
         (clip-systems-to-region
-         (format "~a-from-~a-to-~a-clip"
+         (format #f "~a-from-~a-to-~a-clip"
                  basename
                  (rhythmic-location->file-string (car region))
                  (rhythmic-location->file-string (cdr region)))
                (if (pair? system-list)
                    (clip-score-systems
                     (if (> count 0)
-                        (format "~a-~a" basename count)
+                        (format #f "~a-~a" basename count)
                         basename)
                     system-list)))
              score-system-list)))
                         (stack-stencils Y DOWN 0.0
                                         (map paper-system-stencil
                                              (reverse to-dump-systems)))
-                        (format "~a.preview" basename)
+                        (format #f "~a.preview" basename)
                         #t)
     (postprocess-output book framework-ps-module
-                       (format "~a.preview.eps" basename)
+                       (format #f "~a.preview.eps" basename)
                        (cons "png" (ly:output-formats)))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
index 51a14463021909086fb09aab0260e62733cfdb04..a47eb185fd602112956fff3bf14e4f5caf5d30d4 100644 (file)
@@ -15,7 +15,7 @@
 (define format ergonomic-simple-format)
 
 (define-public (output-framework basename book scopes fields)
-  (let* ((file (open-output-file (format "~a.scm" basename))))
+  (let* ((file (open-output-file (format #f "~a.scm" basename))))
     
     (display ";;Creator: LilyPond\n" file)
     (display ";; raw SCM output\n" file)
index abaaa08ec9142fe65e35ad7ef24dc3dd30c20173..dd542935555cfb61e62d91cf27b8843998817cda 100644 (file)
@@ -36,7 +36,7 @@
 
 (define-public (output-framework channel book scopes fields)
   (let* ((ctor-arg (if (string? channel)
-                      (open-output-file (format "~a.socket" channel))
+                      (open-output-file (format #f "~a.socket" channel))
                       channel))
         (outputter (ly:make-paper-outputter
                     ctor-arg
                (let* ((system-stencil (paper-system-stencil x))
                       (x-extent (ly:stencil-extent system-stencil X))
                       (y-extent (ly:stencil-extent system-stencil Y)))
-                 (format ctor-arg (ly:format "system ~4l ~4l ~4l ~4l\n"
-                         (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent)))
+                 (display (ly:format "system ~4l ~4l ~4l ~4l\n"
+                         (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent)) ctor-arg)
                  (ly:outputter-dump-stencil outputter system-stencil)))
              systems)))
 
 (define-public (output-classic-framework channel book scopes fields)
   (let* ((ctor-arg (if (string? channel)
-                      (open-output-file (format "~a.socket" channel))
+                      (open-output-file (format #f "~a.socket" channel))
                       channel))
         (outputter (ly:make-paper-outputter
                     ctor-arg
                     'socket))
         (systems (ly:paper-book-systems book))
         (paper (ly:paper-book-paper book)))
-    (format ctor-arg (ly:format "paper ~4l\n" (get-page-dimensions paper)))
+    (display (ly:format "paper ~4l\n" (get-page-dimensions paper)) ctor-arg)
     (for-each (lambda (x)
                (let* ((system-stencil (paper-system-stencil x))
                       (x-extent (ly:stencil-extent system-stencil X))
                       (y-extent (ly:stencil-extent system-stencil Y)))
-                 (format ctor-arg (ly:format "system ~4l ~4l ~4l ~4l\n"
-                         (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent)))
+                 (display (ly:format "system ~4l ~4l ~4l ~4l\n"
+                         (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent)) ctor-arg)
                  (ly:outputter-dump-stencil outputter system-stencil)))
              systems)))
 
index f10125caa8d3e0e5a1932cf92ba4d27058b085f6..ad707a7b894f924bf42198fe222345b16761ec14 100644 (file)
@@ -132,7 +132,7 @@ src: url('~a');
        (module-remove! (ly:outputter-module outputter) 'paper))
     (if (ly:get-option 'svg-woff)
        (dump (woff-header paper (dirname filename))))
-    (dump (comment (format "Page: ~S/~S" page-number page-count)))
+    (dump (comment (format #f "Page: ~S/~S" page-number page-count)))
     (ly:outputter-output-scheme outputter
                                `(begin (set! lily-unit-length ,unit-length)
                                        ""))
@@ -178,11 +178,11 @@ src: url('~a');
         (page-count (length page-stencils))
         (filename "")
         (file-suffix (lambda (num)
-                       (if (= page-count 1) "" (format "-page-~a" num)))))
+                       (if (= page-count 1) "" (format #f "-page-~a" num)))))
     (for-each
       (lambda (page)
        (set! page-number (1+ page-number))
-       (set! filename (format "~a~a.svg"
+       (set! filename (format #f "~a~a.svg"
                               basename
                               (file-suffix page-number)))
        (dump-page paper filename page page-number page-count))
@@ -196,4 +196,4 @@ src: url('~a');
                  (stack-stencils Y DOWN 0.0
                                  (map paper-system-stencil
                                       (reverse to-dump-systems)))
-                 (format "~a.preview.svg" basename))))
+                 (format #f "~a.preview.svg" basename))))
index f6fd8fa9e44806b619f8e6cdb7183a8b2fb6fb04..ac60a9465033a35d5069ff800347ef24bda8dbb5 100644 (file)
   (let ((ns (nodes graph))
        (es (edges graph))
        (cs (clusters graph)))
-    (ly:message (format (_ "Writing graph `~a'...") (port-filename out)))
+    (ly:message (format #f (_ "Writing graph `~a'...") (port-filename out)))
     (display "digraph G {\nrankdir=\"LR\"\nnode [shape=rectangle]\n" out)
-    (map (lambda (n) (display (format "~a [label=\"~a\"]\n" (car n) (cdr n)) out))
-        ns)
-    (map (lambda (e) (display (format "~a -> ~a\n" (car e) (cdr e)) out))
-        es)
-    (map (lambda (c)
-         (display (format "subgraph cluster_~a {\nlabel= \"~a\"\ncolor=blue\n"
-                          (string-filter (car c) char-alphabetic?)
-                          (car c))
-                  out)
-         (map (lambda (n) (display (format "~a\n" n) out)) (cdr c))
-         (display "}\n" out))
-        cs)
+    (for-each (lambda (n) (format out "~a [label=\"~a\"]\n" (car n) (cdr n)))
+             ns)
+    (for-each (lambda (e) (format out "~a -> ~a\n" (car e) (cdr e)))
+             es)
+    (for-each (lambda (c)
+               (format out "subgraph cluster_~a {\nlabel= \"~a\"\ncolor=blue\n"
+                       (string-filter (car c) char-alphabetic?)
+                       (car c))
+               (for-each (lambda (n) (format out "~a\n" n)) (cdr c))
+               (display "}\n" out))
+             cs)
     (display "}" out)))
index 4ef49e975989978bfdeeb1af595aa567f76fc06f..aa35be0d63eb2684f78562f0fcd9319025607d1c 100644 (file)
@@ -40,7 +40,7 @@
          (ly:warning (_ "Error in beam quanting.  Expected (~S,~S) found ~S.")
                      want-l want-r posns)
          (set! (ly:grob-property beam 'annotation)
-               (format "(~S,~S)" want-l want-r))))
+               (format #f "(~S,~S)" want-l want-r))))
     posns))))
 
 (define check-beam-slope-sign
@@ -54,7 +54,7 @@
          (ly:warning (_ "Error in beam quanting.  Expected ~S 0, found ~S.")
                      (procedure-name comparison) slope-sign)
          (set! (ly:grob-property beam 'annotation)
-               (format "~S 0" (procedure-name comparison))))
+               (format #f "~S 0" (procedure-name comparison))))
        (set! (ly:grob-property beam 'annotation) ""))
     posns))))
 
index 0e2c810da912504b32010ab56219732712c2cf5b..34c9cb3820096c04603fd358393651bb165491e1 100644 (file)
@@ -179,14 +179,14 @@ bookoutput function"
   ;; as the key to out internal a-list
   (let* ((base-name (get-current-filename parser))
         (output-suffix (get-current-suffix parser))
-        (alist-key (format "~a~a" base-name output-suffix))
+        (alist-key (format #f "~a~a" base-name output-suffix))
         (counter-alist (ly:parser-lookup parser 'counter-alist))
         (output-count (assoc-get alist-key counter-alist 0))
         (result base-name))
     ;; Allow all ASCII alphanumerics, including accents
     (if (string? output-suffix)
         (set! result
-              (format "~a-~a"
+              (format #f "~a-~a"
                       result
                       (string-regexp-substitute
                        "[^-[:alnum:]]"
@@ -746,6 +746,23 @@ Handy for debugging, possibly turned off."
 
    (reverse matches))
 
+(define-public (random-string pool n)
+  "Produces a random lowercase string of length n"
+  (define (helper alphabet out num)
+    (let ((rand (random (string-length pool))))
+      (if (< num 1)
+          out
+          (helper alphabet
+                  (string-concatenate `(,out
+                                        ,(substring alphabet
+                                                    rand
+                                                    (+ 1 rand))))
+                  (- num 1)))))
+  (helper pool "" n))
+
+(define-public (random-lowercase-string n)
+  (random-string "abcdefghijklmnopqrstuvwxyz" n))
+
 ;;;;;;;;;;;;;;;;
 ;; other
 
index 203a449c8f00f1e9d9c7108cb7a8cd045077777f..17c8d1776b2a2d436aa16798115f392170ea13c7 100644 (file)
@@ -585,7 +585,7 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
          (assoc-get 'total-cells-allocated  stats 0))))
 
 (define (dump-profile base last this)
-  (let* ((outname (format "~a.profile" (dir-basename base ".ly")))
+  (let* ((outname (format #f "~a.profile" (dir-basename base ".ly")))
         (diff (map (lambda (y) (apply - y)) (zip this last))))
     (ly:progress "\nWriting timing to ~a..." outname)
     (format (open-file outname "w")
@@ -622,18 +622,15 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
                         ".scm"))
         (outfile (open-file out-file-name "w")))
     (set! gc-dumping #t)
-    (display (format "Dumping GC statistics ~a...\n" out-file-name))
-    (display (map (lambda (y)
-                   (let ((x (car y))
-                         (c (cdr y)))
-                     (display
-                      (format "~a (~a) = ~a\n" (object-address x) c x)
-                      outfile)))
-                 (filter
-                  (lambda (x)
-                    (not (symbol? (car x))))
-                  protects))
-            outfile)
+    (format #t "Dumping GC statistics ~a...\n" out-file-name)
+    (for-each (lambda (y)
+               (let ((x (car y))
+                     (c (cdr y)))
+                 (format outfile "~a (~a) = ~a\n" (object-address x) c x)))
+             (filter
+              (lambda (x)
+                (not (symbol? (car x))))
+              protects))
     (format outfile "\nprotected symbols: ~a\n"
            (apply + (map (lambda (obj-count)
                            (if (symbol? (car obj-count))
@@ -659,13 +656,10 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
     (newline outfile)
     (let* ((stats (gc-stats)))
       (for-each (lambda (sym)
-                 (display
-                  (format "~a ~a ~a\n"
-                          gc-protect-stat-count
-                          sym
-                          (assoc-get sym stats "?"))
-
-                  outfile))
+                 (format outfile "~a ~a ~a\n"
+                         gc-protect-stat-count
+                         sym
+                         (assoc-get sym stats "?")))
                '(protected-objects bytes-malloced cell-heap-size)))
     (set! gc-dumping #f)
     (close-port outfile)))
@@ -686,7 +680,7 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
                                 (string-match "^VmData:[ \t]*([0-9]*) kB" l))
                               lines)))
         (mem (string->number (match:substring (car interesting) 1))))
-    (display (format  "VMDATA: ~a\n" mem))
+    (format #t "VMDATA: ~a\n" mem)
     (display (gc-stats))
     (if (> mem 100000)
        (begin (dump-gc-protects)
@@ -752,7 +746,7 @@ PIDs or the number of the process."
            (ly:set-option 'log-file "lilypond-multi-run"))
        (if (number? joblist)
            (begin (ly:set-option
-                   'log-file (format "~a-~a"
+                   'log-file (format #f "~a-~a"
                                      (ly:get-option 'log-file) joblist))
                   (set! files (vector-ref split-todo joblist)))
            (begin (ly:progress "\nForking into jobs:  ~a\n" joblist)
@@ -768,7 +762,7 @@ PIDs or the number of the process."
                    (lambda (x)
                      (let* ((job (car x))
                             (state (cdr x))
-                            (logfile (format "~a-~a.log"
+                            (logfile (format #f "~a-~a.log"
                                              (ly:get-option 'log-file) job))
                             (log (ly:gulp-file logfile))
                             (len (string-length log))
@@ -776,7 +770,7 @@ PIDs or the number of the process."
                        (if (status:term-sig state)
                            (ly:message
                             "\n\n~a\n"
-                            (format (_ "job ~a terminated with signal: ~a")
+                            (format #f (_ "job ~a terminated with signal: ~a")
                                     job (status:term-sig state)))
                            (ly:message
                             (_ "logfile ~a (exit ~a):\n~a")
@@ -794,7 +788,7 @@ PIDs or the number of the process."
                       (ly:exit 1 #f))))))
 
   (if (string-or-symbol? (ly:get-option 'log-file))
-      (ly:stderr-redirect (format "~a.log" (ly:get-option 'log-file)) "w"))
+      (ly:stderr-redirect (format #f "~a.log" (ly:get-option 'log-file)) "w"))
   (let ((failed (lilypond-all files)))
     (if (ly:get-option 'trace-scheme-coverage)
        (begin
@@ -813,7 +807,7 @@ PIDs or the number of the process."
         (ping-log
          (if separate-logs
              (open-file (if (string-or-symbol? (ly:get-option 'log-file))
-                            (format "~a.log" (ly:get-option 'log-file))
+                            (format #f "~a.log" (ly:get-option 'log-file))
                             "/dev/stderr") "a") #f))
         (do-measurements (ly:get-option 'dump-profile))
         (handler (lambda (key failed-file)
@@ -827,7 +821,7 @@ PIDs or the number of the process."
              (base (dir-basename x ".ly"))
              (all-settings (ly:all-options)))
         (if separate-logs
-            (ly:stderr-redirect (format "~a.log" base) "w"))
+            (ly:stderr-redirect (format #f "~a.log" base) "w"))
         (if ping-log
             (format ping-log "Processing ~a\n" base))
         (if (ly:get-option 'trace-memory-frequency)
index 6bd9fd6236c687950ff450b09ee2184badda92e8..3cf774d4a880bfd66f8e9cc8bd152411143aafa8 100644 (file)
@@ -538,7 +538,7 @@ Uncovered - cheap-markup? is used."
               (ly:stencil? (cadr stencils)))
           (let* ((tail (stack-stencil-line space (cdr stencils)))
                  (head (car stencils))
-                 (xoff (+ space (cdr (ly:stencil-extent head X)))))
+                 (xoff (+ space (interval-length (ly:stencil-extent head X)))))
             (ly:stencil-add head
                              (ly:stencil-translate-axis tail xoff X)))
           (car stencils))
index 31b6c8ad3c48d3861b3ffe500b8a1c6d2f627d76..c31360019912c04285896b5c1e3a19381d5f8736 100644 (file)
@@ -278,7 +278,7 @@ through MUSIC."
        ;; This works for single-note and multi-note tremolos!
        (let* ((children (if (music-is-of-type? main 'sequential-music)
                             ;; \repeat tremolo n { ... }
-                            (length (ly:music-property main 'elements))
+                            (length (extract-named-music main 'EventChord))
                             ;; \repeat tremolo n c4
                             1))
               ;; # of dots is equal to the 1 in bitwise representation (minus 1)!
@@ -304,7 +304,7 @@ through MUSIC."
 (define (calc-repeat-slash-count music)
   "Given the child-list @var{music} in @code{PercentRepeatMusic},
 calculate the number of slashes based on the durations.  Returns @code{0}
-if durations in in @var{music} vary, allowing slash beats and double-percent
+if durations in @var{music} vary, allowing slash beats and double-percent
 beats to be distinguished."
   (let* ((durs (map (lambda (elt)
                      (duration-of-note elt))
@@ -411,7 +411,8 @@ in @var{grob}."
     Slur
     Stem
     TextScript
-    Tie))
+    Tie
+    TupletBracket))
 
 (define-safe-public (make-voice-props-set n)
   (make-sequential-music
@@ -1093,8 +1094,8 @@ specifies whether accidentals should be canceled in different octaves."
              (begin
                (set! need-accidental #t)
                (if (and (not (= this-alt 0))
-                        (or (< (abs this-alt) (abs prev-alt))
-                            (< (* prev-alt this-alt) 0)))
+                        (and (< (abs this-alt) (abs prev-alt))
+                            (> (* prev-alt this-alt) 0)))
                    (set! need-restore #t))))))
 
     (cons need-restore need-accidental)))
index c25edf31f68a93de749a87e69e26cd4dde6dfc3d..025590e5bae0e001db8f089a96b811485faa1198 100644 (file)
@@ -324,13 +324,16 @@ and duration-log @var{log}."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Tuplets
 
+(define-public (tuplet-number::calc-direction grob)
+  (ly:tuplet-bracket::calc-direction (ly:grob-object grob 'bracket)))
+
 (define-public (tuplet-number::calc-denominator-text grob)
   (number->string (ly:event-property (event-cause grob) 'denominator)))
 
 (define-public (tuplet-number::calc-fraction-text grob)
   (let ((ev (event-cause grob)))
 
-    (format "~a:~a"
+    (format #f "~a:~a"
            (ly:event-property ev 'denominator)
            (ly:event-property ev 'numerator))))
 
@@ -360,7 +363,7 @@ and duration-log @var{log}."
          (den (if denominator denominator (ly:event-property ev 'denominator)))
          (num (if numerator numerator (ly:event-property ev 'numerator))))
 
-    (format "~a:~a" den num)))
+    (format #f "~a:~a" den num)))
 
 ;; Print a tuplet fraction with note durations appended to the numerator and the
 ;; denominator
@@ -382,10 +385,10 @@ and duration-log @var{log}."
          (num (if numerator numerator (ly:event-property ev 'numerator))))
 
     (make-concat-markup (list
-                        (make-simple-markup (format "~a" den))
+                        (make-simple-markup (format #f "~a" den))
                         (markup #:fontsize -5 #:note denominatornote UP)
                         (make-simple-markup " : ")
-                        (make-simple-markup (format "~a" num))
+                        (make-simple-markup (format #f "~a" num))
                         (markup #:fontsize -5 #:note numeratornote UP)))))
 
 
@@ -464,6 +467,25 @@ and duration-log @var{log}."
        (+ c0 p))))
 
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; annotations
+
+(define-public (numbered-footnotes int)
+  (markup #:tiny (number->string (+ 1 int))))
+
+(define-public (symbol-footnotes int)
+  (define (helper symbols out idx n)
+    (if (< n 1)
+        out
+        (helper symbols
+                (string-append out (list-ref symbols idx))
+                idx
+                (- n 1))))
+  (markup #:tiny (helper '("*" "†" "‡" "§" "¶")
+                          ""
+                          (remainder int 5)
+                          (+ 1 (quotient int 5)))))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; accidentals
 
index c86047815ade2ecc0a9ea9aec2074a91a58f77ef..28e22f72a3c3ba3733d290b443e8b1a47d804a91 100644 (file)
 ;;;
 
 (define (bezier-sandwich lst thick)
-  (format "bezier_sandwich ~a [~a]"
+  (format #f "bezier_sandwich ~a [~a]"
          thick
          (string-append
            (string-join (map
                           (lambda (x)
-                            (format "(~a,~a)" (car x) (cdr x)))
+                            (format #f "(~a,~a)" (car x) (cdr x)))
                           lst)
                         ","))))
 
 (define (draw-line thick x1 y1 x2 y2)
-  (format "drawline ~a ~a ~a ~a ~a"
+  (format #f "drawline ~a ~a ~a ~a ~a"
          thick x1 y2 x2 y2))
 
 (define (grob-cause offset grob)
              -1))
      (name (assoc-get 'name (ly:grob-property grob 'meta))))
 
-    (apply format
-          (append (list "cause ~a \"~a\" ~a ~a ~a ~a\n" tag name)
-                  (grob-bbox grob offset)))))
+    (apply format #f
+          "cause ~a \"~a\" ~a ~a ~a ~a\n" tag name
+          (grob-bbox grob offset))))
 
 (define (named-glyph font glyph)
-  (format "glyphshow ~a \"~a\" ~a \"~a\""
+  (format #f "glyphshow ~a \"~a\" ~a \"~a\""
          (ly:font-glyph-name-to-charcode font glyph)
          (ly:font-name font)
          (modified-font-metric-font-scaling font)
 
 (define (placebox x y s)
   (if (not (string-null? s))
-      (format "at ~a ~a ~a\n" x y s)
+      (format #f "at ~a ~a ~a\n" x y s)
       ""))
 
 (define (polygon xy-coords blot do-fill)
-  (format "polygon ~a ~a ~a"
+  (format #f "polygon ~a ~a ~a"
          blot
          (if do-fill "True" "False")
          (string-join (map number->string xy-coords))))
 
 (define (round-filled-box breapth width depth height blot-diameter)
-  (format "draw_round_box ~a ~a ~a ~a ~a"
+  (format #f "draw_round_box ~a ~a ~a ~a ~a"
          breapth width depth height blot-diameter))
 
 (define (utf-8-string descr string)
-  (format "utf-8 \"~a\" \"~a\""
+  (format #f "utf-8 \"~a\" \"~a\""
          (escape-string descr)
          ;; don't want unescaped spaces.
          (escape-string string)))
index 3132175414123ef86d6f360eccbe8f6296cc99f5..d993c356358c94fa21fe70f57c09e28cce49687b 100644 (file)
                      (value (cdr x)))
                  (if (number? value)
                      (set! value (ly:format "~4f" value)))
-                 (format " ~s=\"~a\"" attr value)))
+                 (format #f " ~s=\"~a\"" attr value)))
              attributes-alist)))
 
 (define-public (eo entity . attributes-alist)
   "o = open"
-  (format "<~S~a>\n" entity (attributes attributes-alist)))
+  (format #f "<~S~a>\n" entity (attributes attributes-alist)))
 
 (define-public (eoc entity . attributes-alist)
   "oc = open/close"
-  (format "<~S~a/>\n" entity (attributes attributes-alist)))
+  (format #f "<~S~a/>\n" entity (attributes attributes-alist)))
 
 (define-public (ec entity)
   "c = close"
-  (format "</~S>\n" entity))
+  (format #f "</~S>\n" entity))
 
 (define-public (comment s)
   (string-append "<!-- " s " -->\n"))
@@ -86,7 +86,7 @@
   (define (helper lst)
     (if (null? lst)
        '()
-       (cons (format "~S ~S" (car lst) (- (cadr lst)))
+       (cons (format #f "~S ~S" (car lst) (- (cadr lst)))
              (helper (cddr lst)))))
 
   (string-join (helper lst) " "))
 
 (define (dashed-line thick on off dx dy phase)
   (draw-line thick 0 0 dx dy
-            `(stroke-dasharray . ,(format "~a,~a" on off))))
+            `(stroke-dasharray . ,(format #f "~a,~a" on off))))
 
 (define (draw-line thick x1 y1 x2 y2 . alist)
   (apply entity 'line ""
                                  (closepath . z))
                                "")))
 
-         (cons (format "~a~a" svg-head (number-list->point args))
+         (cons (format #f "~a~a" svg-head (number-list->point args))
                (convert-path-exps (drop rest arity))))
        '()))
 
     '(fill . "currentColor")))
 
 (define (setcolor r g b)
-  (format "<g color=\"rgb(~a%, ~a%, ~a%)\">\n"
+  (format #f "<g color=\"rgb(~a%, ~a%, ~a%)\">\n"
          (* 100 r) (* 100 g) (* 100 b)))
 
 ;; rotate around given point
index f65c9559d3ca7510e695638c0c0ae3c949245bd9..0a30acef4dd0471f837cb2d5acf2c9bb6fcffe71 100644 (file)
@@ -69,7 +69,7 @@
  (lambda (j)
    (module-define!
     page-module
-    (string->symbol (format "page-~a" j))
+    (string->symbol (format #f "page-~a" j))
     (lambda (pg)
       (page-property pg j))))
 
index 17f822247b763286137855573b7bbcc1b90ea658..80bb58abcca28579c7ff3d6fe26477c13b27de79 100644 (file)
     (pixmap-format 'png16m)
     (anti-alias-factor 1))
 
-   (let* ((format-str (format "~a" pixmap-format))
+   (let* ((format-str (format #f "~a" pixmap-format))
          (extension (cond
                      ((string-contains format-str "png") "png")
                      ((string-contains format-str "jpg") "jpeg")
                      (else
                       (ly:error "Unknown pixmap format ~a" pixmap-format))))
          (base (dir-basename ps-name ".ps" ".eps"))
-         (png1 (format "~a.~a" base extension))
-         (pngn (format  "~a-page%d.~a" base extension))
+         (png1 (format #f "~a.~a" base extension))
+         (pngn (format #f "~a-page%d.~a" base extension))
          (page-count (ps-page-count ps-name))
          (multi-page? (> page-count 1))
          (output-file (if multi-page? pngn png1))
           (if multi-page?
               (map
                (lambda (n)
-                 (format "~a-page~a.png" base (1+ n)))
+                 (format #f "~a-page~a.png" base (1+ n)))
                (iota page-count))
-              (list (format "~a.png" base))))
+              (list (format #f "~a.png" base))))
      
      (if (not (= 0 status))
         (begin
index 60ac97920bbd5984c07d8e3f9f849442ea2686dc..52e4bdeeb7023caa0f7dd348b68551ce08f05682 100644 (file)
    ly:stem::height
    ly:stem::offset-callback
    ly:stem::print
-   ly:stem-tremolo::height
    ly:stem-tremolo::print
    ly:sustain-pedal::print
    ly:system-start-delimiter::print
index 9dbca9fd6286d7c1c8204075840737c8e4d287fc..9655e321e49afe05c00a48361d2d8f8fc3bbc608 100644 (file)
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 
-(define-module (scm song))
-
-(use-modules (srfi srfi-1))
-(use-modules (ice-9 optargs))
-(use-modules (ice-9 receive))
-
-(use-modules (lily))
-(use-modules (scm song-util))
+(define-module (scm song)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-39)
+  #:use-module (ice-9 optargs)
+  #:use-module (ice-9 receive)
+  #:use-module (lily)
+  #:use-module (scm song-util))
 
 
 ;;; Configuration
 
 ;; The word to be sung in places where notes are played without lyrics.
 ;; If it is #f, the places without lyrics are omitted on the output.
-(define-public *skip-word* "-skip-")
+(define-public *skip-word* (make-parameter "-skip-"))
 
 ;; If true, use syllables in the Festival XML file.
 ;; If false, use whole words instead; this is necessary in languages like
 ;; English, were the phonetic form cannot be deduced from syllables well enough.
-(define-public *syllabify* #f)
+(define-public *syllabify* (make-parameter #f))
 
 ;; Base Festival octave to which LilyPond notes are mapped.
-(define-public *base-octave* 5)
+(define-public *base-octave* (make-parameter 5))
 ;; The resulting base octave is sum of *base-octave* and
 ;; *base-octave-shift*.  This is done to work around a Festival bug
 ;; causing Festival to segfault or produce invalid pitch on higher pitches.
 ;(define *base-octave-shift* -2)
-(define *base-octave-shift* 0)
+(define *base-octave-shift* (make-parameter 0))
 
 ;; The coeficient by which the notes just before \breath are shortened.
-(define-public *breathe-shortage* 0.8)
+(define-public *breathe-shortage* (make-parameter 0.8))
 
 
 ;;; LilyPond interface
         (set! *default-tempo* (property-value
                                (find-child tempo-spec (lambda (elt)
                                                         (music-property? elt 'tempoWholesPerMinute)))))
-        (round (* tempo (expt 2 (+ 2 *base-octave-shift*)))))))
+        (round (* tempo (expt 2 (+ 2 (*base-octave-shift*))))))))
 
 (defstruct music-context
   music
            (push! (make-lyrics
                         #:text (ly:music-property lyric-event 'text)
                         #:duration (* (duration->number (ly:music-property lyric-event 'duration)) 4)
-                        #:unfinished (and (not *syllabify*) (find-child-named music 'HyphenEvent))
+                        #:unfinished (and (not (*syllabify*)) (find-child-named music 'HyphenEvent))
                         #:ignore-melismata ignore-melismata
                         #:context current-voice)
                        lyrics-list))
         ((music-name? music 'BreathingEvent)
          (if last-note-spec
              (let* ((note-duration (note-duration last-note-spec))
-                    (rest-spec (make-rest #:duration (* note-duration (- 1 *breathe-shortage*))
+                    (rest-spec (make-rest #:duration (* note-duration (- 1 (*breathe-shortage*)))
                                                #:origin (ly:music-property music 'origin))))
-               (set-note-duration! last-note-spec (* note-duration *breathe-shortage*))
+               (set-note-duration! last-note-spec (* note-duration (*breathe-shortage*)))
                (add! (make-score-notes #:note/rest-list (list rest-spec)) result-list))
              (warning music "\\\\breathe without previous note known")))
         ;; anything else
                          last-verse
                          (append (verse-notelist/rests last-verse) (list notelist/rest))))))
                  ((pair? notelist/rest)
-                  (add! (make-verse #:text *skip-word* #:notelist/rests (list notelist/rest))
+                  (add! (make-verse #:text (*skip-word*) #:notelist/rests (list notelist/rest))
                              verse-list))
                  (else
                   (error "Unreachable branch reached")))
      ((< duration (- epsilon))
       (warning (if (null? note-list) (safe-last consumed) (safe-car note-list))
                     "Skip misalignment: ~a ~a ~a ~a" context skip duration consumed)))
-    (values (if *skip-word*
+    (values (if (*skip-word*)
                 consumed
                 '())
             note-list)))
          (octave (inexact->exact (floor (/ semitones 12))))
          (tone (modulo semitones 12)))
     (format #f "~a~a" (car (assoc-get tone festival-note-mapping))
-            (+ octave *base-octave* *base-octave-shift*))))
+            (+ octave (*base-octave*) (*base-octave-shift*)))))
 
 (define (write-header port tempo)
   (let ((beats (or (tempo->beats tempo) 100)))
index 64f48cc89df75604f2b1a47b0bf085d2a8624686..2f31d343f5d020b6e46cff7039123a2917a070f3 100644 (file)
@@ -640,7 +640,7 @@ with optional arrows of @code{max-size} on start and end controlled by
                             (markup #:whiteout
                                     #:simple (cond
                                               ((interval-empty? extent)
-                                               (format "empty"))
+                                               "empty")
                                               (is-length
                                                (ly:format "~$" (interval-length extent)))
                                               (else
index 94862688fdb522ec369130ae485000983bafc582..314e66ff59b8783263efcbcaa36f0f721a240f18 100644 (file)
@@ -565,7 +565,7 @@ only ~a fret labels provided")
 (define-public (fret-number-tablature-format
                 context string-number fret-number)
   (make-vcenter-markup
-    (format "~a" fret-number)))
+    (format #f "~a" fret-number)))
 
 ;; The 5-string banjo has got a extra string, the fifth (duh), which
 ;; starts at the fifth fret on the neck.  Frets on the fifth string
index 845e97672fe782acdae18b98bf3a1dd1621b6a10..ca7806fe58bfdd8f93402ee9d6ecc4193e915cec 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-# fixcc -- nitpick lily's c++ code
+# fixcc -- indent and space lily's c++ code
 
 # This file is part of LilyPond, the GNU music typesetter.
 #
 # You should have received a copy of the GNU General Public License
 # along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
+#  Performs string substitution on files, then applies astyle
+#  (http://astyle.sourceforge.net)
 # TODO
-#  * maintainable rules: regexp's using whitespace (?x) and match names
-#    <identifier>)
-#  * trailing `*' vs. function definition
-#  * do not break/change indentation of fixcc-clean files
-#  * check lexer, parser
-#  * rewrite in elisp, add to cc-mode
-#  * using regexes is broken by design
-#  * ?
-#  * profit
+#  Remove prefiltering as the equivalent formatting becomes available in
+#  astyle, or as the prefiltering is deemed un-necessary.
+#  Soon, this script might be replaced by a simple invocation of astyle
 
 import __main__
 import getopt
@@ -41,133 +37,60 @@ STRING = 'STRING'
 GLOBAL_CXX = 'GC++'
 CXX = 'C++'
 verbose_p = 0
-indent_p = 0
+indent_p = 1
 
 rules = {
     GLOBAL_CXX:
     [
-    # delete gratuitous block -- disabled because it breaks .h files
-#    ('''\n(    |\t)\s*{\n\s*(.*?)(?![{}]|\b(do|for|else|if|switch|while)\b);\n\s*}''',
-#    '\n\\2;'),
+    # delete trailing whitespace
+    ('[ \t]*\n', '\n'),
     ],
     CXX:
     [
     # space before parenthesis open
-    ('([^\( \]])[ \t]*\(', '\\1 ('),
-    # space after comma
-    ("\([^'],\)[ \t]*", '\1 '),
-    # delete gratuitous block -- disabled because it breaks .h files
-#    ('''\n(    |\t)\s*{\n\s*(.*?)(?![{}]|\b(do|for|else|if|switch|while)\b);\n\s*}''',
-#    '\n\\2;'),
-    # delete inline tabs
-    ('(\w)\t+', '\\1 '),
+    ('([\w\)\]])\(', '\\1 ('),
     # delete inline double spaces
-    ('   *', ' '),
-    # delete space after parenthesis open
-    ('\([ \t]*', '('),
+    ('(\S)  +', '\\1 '),
     # delete space before parenthesis close
-    ('[ \t]*\)', ')'),
+    (' *\)', ')'),
     # delete spaces after prefix
-    ('(--|\+\+)[ \t]*([\w\)])', '\\1\\2'),
+    ('(--|\+\+) *([\w\(])', '\\1\\2'),
     # delete spaces before postfix
-    ('([\w\)\]])[ \t]*(--|\+\+)', '\\1\\2'),
-    # delete space after parenthesis close
-    #('\)[ \t]*([^\w])', ')\\1'),
+    ('([\w\)\]]) *(--|\+\+)', '\\1\\2'),
+
     # delete space around operator
-    # ('([\w\(\)\]])([ \t]*)(::|\.)([ \t]*)([\w\(\)])', '\\1\\3\\5'),
-    ('([\w\(\)\]])([ \t]*)(\.|->)([ \t]*)([\w\(\)])', '\\1\\3\\5'),
+    ('([\w\(\)\]]) *(\.|->) *([\w\(\)])', '\\1\\2\\3'),
     # delete space after operator
-    ('(::)([ \t]*)([\w\(\)])', '\\1\\3'),
+    ('(::) *([\w\(\)])', '\\1\\2'),
+
     # delete superflous space around operator
-    ('([\w\(\)\]])([ \t]+)(&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|\+|-|=|/|:|&|\||\*)([ \t]+)([\w\(\)])', '\\1 \\3 \\5'),
-    # space around operator1
-    ('([\w\)\]]) *(&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|=|/|:|&|\||\*) *([\w\(])', '\\1 \\2 \\3'),
-    # space around operator2
-    ('([\w\)\]]) *(&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|=|/|:|&|\||\*) ([^\w\s])', '\\1 \\2 \\3'),
-    # space around operator3
-    ('([^\w\s]) (&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|[^-]>|=|/|:|&|\||\*) *([\w\(])', '\\1 \\2 \\3'),
-    # space around operator4
-    ('([\w\(\)\]]) (\*|/|\+|-) *([-:])', '\\1 \\2 \\3'),
-    # space around +/-; exponent
-    ('([\w\)\]])(\+|-)([_A-Za-z\(])', '\\1 \\2 \\3'),
-    ('([_\dA-Za-df-z\)\]])(\+|-)([\w\(])', '\\1 \\2 \\3'),
-    # trailing operator, but don't un-trail #include
-    (' (::|&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|\+|-|=|/|:|&XXX|\||\*XXX)[ \t]*\n([ \t]*)(?!#include)', '\n\\2\\1 '),
-    # pointer
-    ##('(bool|char|const|delete|int|stream|unsigned|void|size_t|struct \w+|[A-Z]\w*|,|;|&&|<|[^-]>|\|\||-|\+)[ \t]*(\*|&)[ \t]*', '\\1 \\2'),
-    ('(bool|char|const|delete|int|stream|unsigned|void|vsize|size_t|struct \w+|[A-Z]\w*|,|;|:|=|\?\)|&&|<|[^-]>|\|\||-|\+)[ \t]*(\*|&)[ \t]*', '\\1 \\2'),
-    #to#('(bool|char|const|delete|int|stream|unsigned|void|([A-Z]\w*)|[,])[ \n\t]*(\*|&)[ \t]*', '\\1 \\3'),
-    # pointer with template
-    ('(( *((bool|char|const|delete|int|stream|unsigned|void|size_t|class[ \t]+\w*|[A-Z]\w*|\w+::\w+|[,])\s*[\*&],*)+)>) *(\*|&) *', '\\1 \\5'),
-    #to#('(( *((bool|char|delete|int|stream|unsigned|void|(class[ \t]+\w*)|([A-Z]\w*)|[,])[ \*&],*)+)>)[ \t\n]*(\*|&) *', '\\1 \\7'),
-    # unary pointer, minus, not
-    ('(return|=|&&|\|\|) (\*|&|-|!) ([\w\(])', '\\1 \\2\\3'),
+    ('([\w\(\)\]]) +(&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|\+|-|=|/|:|&|\||\*) +([\w\(\)])', '\\1 \\2 \\3'),
+
+    # trailing operator, but don't un-trail close angle-braces > nor pointer *, and not before a preprocessor line
+    (' (::|&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|\+|-|=|/|:|&XXX|\||\*XXX) *\n( *)([^\s#])', '\n\\2\\1 \\3'),
     # space after `operator'
     ('(\Woperator) *([^\w\s])', '\\1 \\2'),
-    # dangling brace close
-    ('\n[ \t]*(\n[ \t]*})', '\\1'),
-    # dangling newline
-    ('\n[ \t]*\n[ \t]*\n', '\n\n'),
-    # dangling parenthesis open
-    #('[ \t]*\n[ \t]*\([ \t]*\n', '('),
-    ('\([ \t]*\n', '('),
-    # dangling parenthesis close
-    ('\n[ \t]*\)', ')'),
+    # trailing parenthesis open
+    ('\( *\n *', '('),
+    # dangling parenthesis close: Disabled to leave ADD_TRANSLATOR format in place
+    #('\n *\)', ')'),
     # dangling comma
-    ('\n[ \t]*,', ','),
-    # dangling semicolon, but don't un-dangle it onto #include
-    ('(\n.*\n[ \t]*;)(?!\n#include)', '\\1'),
-    # brace open, but not changing a #define... line
-    ('(\w)[ \t]*([^\s]*){([ \t]*\n)(?!#define)', '\\1\\2\n{\n'),
-    # brace open backslash
-    ('(\w[^\n]*){[ \t]*\\\\\n', '\\1\\\n{\\\n'),
-    # brace close
-    ("}[ \t]*([^'\n]*\w[^\n\\\]*)\n", '}\n\\1\n'),
-    # brace close backslash
-    ("}[ \t]*([^'\n]*\w[^\n\\\]*)", '\n}\n\\1'),
-    # delete space after `operator'
-    #('(\Woperator) (\W)', '\\1\\2'),
+    ('\n( *),', ',\n\\1'),
     # delete space after case, label
-    ('(\W(case|label) ([\w]+)) :', '\\1:'),
+    ('(\W(case|label) [\w]+) :', '\\1:'),
     # delete space before comma
-    ('[ \t]*,', ','),
+    (' +,', ','),
     # delete space before semicolon
-    ('[ \t]*;', ';'),
-    # delete space before eol-backslash
-    ('[ \t]*\\\\\n', '\\\n'),
-    # delete trailing whitespace
-    ('[ \t]*\n', '\n'),
+    ('([^;]) +;', '\\1;'),
+    # dangling newline
+    ('\n\n+', '\n\n'),
 
-    ## Deuglify code that also gets ugly by rules above.
-    # delete newline after typedef struct
-    ('(typedef struct\s+([\w]*\s){([^}]|{[^}]*})*})\s*\n\s*(\w[\w\d]*;)', '\\1 \\4'),
-    # delete spaces around template brackets
-    #('(dynamic_cast|template|([A-Z]\w*))[ \t]*<[ \t]*(( *(bool|char|int|unsigned|void|(class[ \t]+\w*)|([A-Z]\w*)),?)+)[ \t]?(| [\*&])[ \t]*>', '\\1<\\3\\8>'),
-    ('(dynamic_cast|less|list|map|set|template|typedef|vector|\w+::\w+|[A-Z]\w*)[ \t]*<[ \t]*(( *(bool|char|const|string|int|unsigned|void|vsize|size_t|class[ \t]+\w*|[A-Z]\w*)( *[\*&]?,|[\*&])*)+)[ \t]?(| [\*&])[ \t]*>', '\\1<\\2\\6>'),
-    ('(\w+::\w+|[A-Z]\w*) < ((\w+::\w+|[A-Z]\w*)<[A-Z]\w*>) >', '\\1<\\2 >'),
-    ('((if|while)\s+\(([^\)]|\([^\)]*\))*\))\s*;', '\\1\n;'),
-    ('(for\s+\(([^;]*;[^;]*;([^\)]|\([^\)]*\))*)\))\s*;', '\\1\n;'),
-    # do {..} while
-    ('(}\s*while\s*)(\(([^\)]|\([^\)]*\))*\))\s*;', '\\1\\2;'),
-
-    ## Fix code that gets broken by rules above.
-    ##('->\s+\*', '->*'),
-    # delete space before #define x()
-    ('#[ \t]*define (\w*)[ \t]*\(', '#define \\1('),
-    # add space in #define x ()
-    ('#[ \t]*define (\w*)(\(([^\(\)]|\([^\(\)]*\))*\)\\n)',
-    '#define \\1 \\2'),
-    # delete space in #include <>
-    ('#[ \t]*include[ \t]*<[ \t]*([^ \t>]*)[ \t]*(/?)[ \t]*([^ \t>]*)[ \t]*>',
-    '#include <\\1\\2\\3>'),
     # delete backslash before empty line (emacs' indent region is broken)
     ('\\\\\n\n', '\n\n'),
     ],
 
     COMMENT:
     [
-    # delete trailing whitespace
-    ('[ \t]*\n', '\n'),
     # delete empty first lines
     ('(/\*\n)\n*', '\\1'),
     # delete empty last lines
@@ -189,6 +112,12 @@ rules = {
 no_match = 'a\ba'
 snippet_res = {
     CXX: {
+    'define':
+    r'''(?x)
+    (?P<match>
+    (?P<code>
+    \#[ \t]*define[ \t]+([^\n]*\\\n)*[^\n]*))''',
+
     'multiline_comment':
     r'''(?sx)
     (?P<match>
@@ -197,16 +126,16 @@ snippet_res = {
     
     'singleline_comment':
     r'''(?mx)
-    ^.*
+    ^.*?    # leave leading spaces for the comment snippet
     (?P<match>
     (?P<code>
-    [ \t]*//([ \t][^\n]*|)\n))''',
+    [ \t]*//[^\n]*\n))''',
 
     'string':
     r'''(?x)
     (?P<match>
     (?P<code>
-    "([^\"\n](\")*)*"))''',
+    "([^"\n]|\\")*"))''',
     
     'char':
     r'''(?x)
@@ -214,13 +143,13 @@ snippet_res = {
     (?P<code>
     '([^']+|\')))''',
      
-     'include':
-     r'''(?x)
-     (?P<match>
-     (?P<code>
-     "#[ \t]*include[ \t]*<[^>]*>''',
-     },
-     }
+    'include':
+    r'''(?x)
+    (?P<match>
+    (?P<code>
+    \#[ \t]*include[ \t]*<[^>]*>))''',
+    },
+    }
 
 class Chunk:
     def replacement_text (self):
@@ -370,20 +299,23 @@ def find_toplevel_snippets (s, types):
 def nitpick_file (outdir, file):
     s = open (file).read ()
 
+    t = s.expandtabs(8)
     for i in rules[GLOBAL_CXX]:
-        s = re.sub (i[0], i[1], s)
+        t = re.sub (i[0], i[1], t)
 
     # FIXME: Containing blocks must be first, see
     #        find_toplevel_snippets.
     #        We leave simple strings be part of the code
     snippet_types = (
+        'define',
         'multiline_comment',
         'singleline_comment',
         'string',
 #                'char',
+        'include',
         )
 
-    chunks = find_toplevel_snippets (s, snippet_types)
+    chunks = find_toplevel_snippets (t, snippet_types)
     #code = filter (lambda x: is_derived_class (x.__class__, Substring),
     #               chunks)
 
@@ -402,37 +334,19 @@ def nitpick_file (outdir, file):
         indent_file (fixt)
 
 def indent_file (file):
-    emacs = '''emacs\
-    --no-window-system\
-    --batch\
-    --no-site-file\
-    --no-init-file\
-    %(file)s\
-    --eval '(let ((error nil)
-           (version-control nil))
-        (load-library "cc-mode")
-        (c++-mode)
-        (indent-region (point-min) (point-max))
-        (if (buffer-modified-p (current-buffer))
-         (save-buffer)))' ''' % vars ()
-    emacsclient = '''emacsclient\
-    --socket-name=%(socketdir)s/%(socketname)s\
-    --no-wait\
-    --eval '(let ((error nil)
-           (version-control nil))
-        (load-library "cc-mode")
-        (find-file "%(file)s")
-        (c++-mode)
-        (indent-region (point-min) (point-max))
-        (if (buffer-modified-p (current-buffer))
-         (save-buffer)))' ''' \
-         % { 'file': file,
-           'socketdir' : socketdir,
-           'socketname' : socketname, }
+    astyle = '''astyle\
+  --options=none --quiet -n \
+  --style=gnu --indent=spaces=2 \
+  --max-instatement-indent=60 \
+  --indent-cases \
+  --align-pointer=name --pad-oper \
+  --keep-one-line-blocks \
+  %(file)s
+  ''' % vars ()
     if verbose_p:
-        sys.stderr.write (emacs)
+        sys.stderr.write (astyle)
         sys.stderr.write ('\n')
-    os.system (emacs)
+    os.system (astyle)
 
 
 def usage ():
@@ -442,27 +356,27 @@ fixcc [OPTION]... FILE...
 
 Options:
  --help
- --indent   reindent, even if no changes
+ --lazy   skip astyle, if no changes
  --verbose
  --test
 
 Typical use with LilyPond:
 
- fixcc $(find flower kpath-guile lily -name '*cc' -o -name '*hh' | grep -v /out)
+ fixcc $(find flower lily -name '*cc' -o -name '*hh' | grep -v /out)
 
 ''')
 
 def do_options ():
     global indent_p, outdir, verbose_p
     (options, files) = getopt.getopt (sys.argv[1:], '',
-                     ['help', 'indent', 'outdir=',
+                     ['help', 'lazy', 'outdir=',
                      'test', 'verbose'])
     for (o, a) in options:
         if o == '--help':
             usage ()
             sys.exit (0)
-        elif o == '--indent':
-            indent_p = 1
+        elif o == '--lazy':
+            indent_p = 0
         elif o == '--outdir':
             outdir = a
         elif o == '--verbose':
@@ -483,33 +397,7 @@ format = CXX
 socketdir = '/tmp/fixcc'
 socketname = 'fixcc%d' % os.getpid ()
 
-def setup_client ():
-    #--no-window-system\
-    #--batch\
-    os.unlink (os.path.join (socketdir, socketname))
-    os.mkdir (socketdir, 0700)
-    emacs='''emacs\
-        --no-site-file\
-        --no-init-file\
-        --eval '(let ((error nil)
-               (version-control nil))
-            (load-library "server")
-            (setq server-socket-dir "%(socketdir)s")
-            (setq server-name "%(socketname)s")
-            (server-start)
-            (while t) (sleep 1000))' ''' \
-            % { 'socketdir' : socketdir,
-              'socketname' : socketname, }
-              
-    if not os.fork ():
-        os.system (emacs)
-        sys.exit (0)
-    while not os.path.exists (os.path.join (socketdir, socketname)):
-        time.sleep (1)
-
 def main ():
-    #emacsclient should be faster, but this does not work yet
-    #setup_client ()
     files = do_options ()
     if outdir and not os.path.isdir (outdir):
         os.makedirs (outdir)
index ad59b2cdea42eb559ffba6583c91beb2453b3962..6f16791313d94a5aa83bfe7742406c16fff93e37 100755 (executable)
@@ -224,11 +224,7 @@ proc update_lilypond {rebase} {
         git config core.bare false
         git remote add -t $originHead \
             origin git://git.sv.gnu.org/lilypond.git
-        if {$translator == 1} {
-            git fetch
-        } else {
-            git fetch --depth 1
-        }
+        git fetch
         git reset --hard origin/$originHead
         git config branch.$originHead.remote origin
         git config branch.$originHead.merge refs/heads/$originHead
index adf8681638f72781bbb915979403ff47ad613668..8b4f3a3e320a6aedbbe6df31c581fcfe36c33b00 100755 (executable)
@@ -138,7 +138,7 @@ def escape_backslashes_in_header(snippet):
     # one backreference to group 1 (that's two 2\ ).
     new_header = re.sub("@code\{\\\\([a-zA-Z])", "@code{\\\\\\\\\\1", header)
     escaped_snippet = (snippet[:header_char_number_start] +
-       new_header + snippet[header_char_number_end:])
+        new_header + snippet[header_char_number_end:])
     return escaped_snippet
 
 def copy_ly (srcdir, name, tags):
index c48b0085b0d82588be85030fdb794bc387676f7f..d799925909c9c4933527cafe77bfb56149977c4b 100644 (file)
@@ -409,9 +409,9 @@ def make_manual_links(name, version, lang):
                 "http://lilypond.org",
                 mshort+getTrans(" (did not exist in 2.12)",lang))
             continue
-       # this is stupid and I shouldn't have bothered trying
-       # to support the 2.12 docs and it will be deleted once
-       # 2.14 is out and the website won't be visible to users
+        # this is stupid and I shouldn't have bothered trying
+        # to support the 2.12 docs and it will be deleted once
+        # 2.14 is out and the website won't be visible to users
         # until 2.14 is out.  -gp
         if (url.endswith('.html')):
             make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
index 46fb8163dd7e74d0d5e9c785c1999e89da47b726..8d7d08b214a9fdd7c145cdcd40bfa8d0235de480 100644 (file)
@@ -42,6 +42,7 @@ SetFontNames("%(name)s-%(design_size)d", "%(name)s-%(design_size)d", "%(name)s-%
 
 MergeFonts("feta%(design_size)d.pfb");
 MergeFonts("feta-noteheads%(design_size)d.pfb");
+MergeFonts("feta-flags%(design_size)d.pfb");
 MergeFonts("parmesan%(design_size)d.pfb");
 
 # load nummer/din after setting PUA.
index 3f7b3cbb2fc88ff969711bcb2a478e5dee09df09..4f8f92dbc5e4e0bc9442e760ca9b0c4b0943a320 100644 (file)
@@ -244,6 +244,8 @@ for filenm in files:
         enc_name = 'ParmesanEncoding'
     elif re.search ('feta-noteheads', filenm):
         enc_name = 'FetaNoteheadsEncoding'
+    elif re.search ('feta-flags', filenm):
+        enc_name = 'FetaFlagsEncoding'
     elif re.search ('feta-brace', filenm):
         enc_name = 'FetaBraceEncoding'
     elif re.search ('feta-alphabet', filenm):
index 551da4657e5c1d0ccd22e3991810335cf07ca724..6ad2d5995e92edaa992ba3a5bc7f58cd6acb383f 100644 (file)
@@ -181,10 +181,10 @@ for file in html_files:
             # questionable
             if (not link.startswith("../doc/")):
                 if (link.endswith(".html")):
-                   langlink = addLangExt(link[:-5], lang, "html")
+                    langlink = addLangExt(link[:-5], lang, "html")
                     line = line.replace(link, langlink)
                 if (link.endswith(".pdf")):
-                   langlink = addLangExt(link[:-4], lang, "pdf")
+                    langlink = addLangExt(link[:-4], lang, "pdf")
                     line = line.replace(link, langlink)
         ### add google tracker header
         if (line.find("</head>") >= 0):
index 73809a4d4d9f227591ded8fbfb0a63664f9e8226..357988818d13fe45d377e693a0707082e92fb3e0 100644 (file)
@@ -35,6 +35,8 @@ def process_options (args):
                        help="prefix filtered track numbers with PREFIX")
     parser.add_option ('', '--dump', action='store_true', dest='dump',
                        help="just dump parsed contents of the MIDI file")
+    parser.add_option ('', '--pretty', action='store_true', dest='pretty',
+                       help="dump parsed contents of the MIDI file in human-readable form (implies --dump)")
     parser.usage = parser.usage + " FILE"
     options, args = parser.parse_args (args)
     if len (args) != 1:
@@ -62,13 +64,142 @@ def track_info (data):
         track_info.append ((i, track_name (tracks[i])))
     return track_info
 
+
+class formatter:
+   def __init__ (self, txt = ""):
+     self.text = txt
+   def format_vals (self, val1, val2 = ""):
+     return str (val1) + str(val2)
+   def format (self, val1, val2 = ""):
+     return self.text + self.format_vals (val1, val2)
+class none_formatter (formatter):
+   def format_vals (self, val1, val2 = ""):
+     return ''
+class meta_formatter (formatter):
+   def format_vals (self, val1, val2):
+     return str (val2);
+class tempo_formatter (formatter):
+   def format_vals (self, val1, val2):
+     return str (val2) + " msec/quarter"
+
+class time_signature_formatter (formatter):
+   def format_vals (self, val1, val2 = ""):
+     return str (val2)   # TODO
+class key_signature_formatter (formatter):
+   def format_vals (self, val1, val2):
+     return str (val2)   # TODO
+class channel_formatter (formatter):
+   def __init__ (self, txt, ch):
+     formatter.__init__ (self, txt)
+     self.channel = ch
+   def format (self, val1, val2 = ""):
+     return self.text + "Channel " + str (self.channel) + ", " + \
+            self.format_vals (val1, val2)
+class control_mode_formatter (formatter):
+   def __init__ (self, txt, ch):
+     formatter.__init__ (self, txt)
+     self.mode = ch
+   def format (self, val1, val2 = ""):
+     return self.text + str (self.mode) + ", " + \
+            self.format_vals (val1, val2)
+class note_formatter (channel_formatter):
+   def pitch (self, val):
+     pitch_names = ['C', 'Cis', 'D', 'Dis', 'E', 'F', 'Fis', 'G', 'Gis', 'A', 'Ais', 'B'];
+     p = val % 12;
+     oct = val / 12 -1;
+     return pitch_names[p] + str(oct) + "(" + str(val) + ")"
+   def velocity (self, val):
+     #01   #10   #20   #30   #40   #50   #60   #70   #7F
+     pass;
+   def format_vals (self, val1, val2):
+     return self.pitch (val1)
+
+
+meta_dict = {0x00: meta_formatter ("Seq.Nr.:    "),
+             0x01: meta_formatter ("Text:       "),
+             0x02: meta_formatter ("Copyright:  "),
+             0x03: meta_formatter ("Track name: "),
+             0x04: meta_formatter ("Instrument: "),
+             0x05: meta_formatter ("Lyric:      "),
+             0x06: meta_formatter ("Marker:     "),
+             0x07: meta_formatter ("Cue point:  "),
+             0x2F: none_formatter ("End of Track"),
+             0x51: tempo_formatter ("Tempo:      "),
+             0x54: meta_formatter ("SMPTE Offs.:"),
+             0x58: time_signature_formatter ("Time signature: "),
+             0x59: key_signature_formatter ("Key signature: ")
+}
+
+def dump_event (ev, time, padding):
+    ch = ev[0] & 0x0F;
+    func = ev[0] & 0xF0;
+    f = None
+    if (ev[0] == 0xFF):
+        f = meta_dict.get (ev[1], formatter ())
+    if (func == 0x80):
+        f = note_formatter ("Note off: ", ch)
+    elif (func == 0x90):
+        if (ev[2] == 0):
+          desc = "Note off: "
+        else:
+          desc = "Note on: "
+        f = note_formatter (desc, ch)
+    elif (func == 0xA0):
+        f = note_formatter ("Polyphonic aftertouch: ", ch, "Aftertouch pressure: ")
+    elif (func == 0xB0):
+        f = control_mode_formatter ("Control mode change: ", ch)
+    elif (func == 0xC0):
+        f = channel_formatter ("Program Change: ", ch)
+    elif (func == 0xD0):
+        f = channel_formatter ("Channel aftertouch: ", ch)
+    elif (ev[0] in [0xF0, 0xF7]):
+        f = meta_formatter ("System-exclusive event: ")
+
+    if f:
+      if len (ev) > 2:
+        print padding + f.format (ev[1], ev[2])
+      elif len (ev) > 1:
+        print padding + f.format (ev[1])
+      else:
+        print padding + f.format ()
+    else:
+      print padding + "Unrecognized MIDI event: " + str (ev);
+
+def dump_midi (data, midi_file, options):
+    if not options.pretty:
+        print data
+        return
+    # First, dump general info, #tracks, etc.
+    print "Filename:     " + midi_file;
+    i = data[0];
+    m_formats = {0: 'single multi-channel track',
+                 1: "one or more simultaneous tracks",
+                 2: "one or more sequentially independent single-track patterns"}
+    print "MIDI format:  " + str (i[0]) + " (" + m_formats.get (i[0], "") + ")";
+    print "Divisions:    " + str (i[1]) + " per whole note";
+    print "#Tracks:      " + str ( len (data[1]))
+    n = 0;
+    for tr in data[1]:
+      time = 0;
+      n += 1;
+      print
+      print "Track " + str(n) + ":"
+      print "    Time 0:"
+      for ev in tr:
+        if ev[0]>time:
+           time = ev[0]
+           print "    Time " + str(time) + ": "
+        dump_event (ev[1], time, "        ");
+
+
+
 def go ():
     options, args = process_options (sys.argv[1:])
     midi_file = args[0]
     midi_data = read_midi (midi_file)
     info = track_info (midi_data)
-    if options.dump:
-        print midi_data
+    if (options.dump or options.pretty):
+        dump_midi (midi_data, midi_file, options);
     elif options.regexp:
         import re
         regexp = re.compile (options.regexp)
index 9617f3666d3a4c878325a089b3d898def9771a8d..cb3ff4de3269861c09f0e5d83bb46a2bbdd39ca4 100644 (file)
@@ -179,6 +179,11 @@ def get_option_parser ():
                   action='store',
                   dest='process_cmd', default='')
 
+    p.add_option ('--redirect-lilypond-output',
+                  help = _ ("Redirect the lilypond output"),
+                  action='store_true',
+                  dest='redirect_output', default=False)
+
     p.add_option ('-s', '--safe', help=_ ("Compile snippets in safe mode"),
                   action="store_true",
                   default=False,
@@ -347,7 +352,7 @@ def find_toplevel_snippets (input_string, formatter):
 
     return snippets
 
-def system_in_directory (cmd, directory):
+def system_in_directory (cmd, directory, logfile):
     """Execute a command in a different directory.
 
     Because of win32 compatibility, we can't simply use subprocess.
@@ -355,7 +360,10 @@ def system_in_directory (cmd, directory):
 
     current = os.getcwd()
     os.chdir (directory)
-    ly.system(cmd, be_verbose=global_options.verbose,
+    ly.system(cmd,
+              be_verbose=global_options.verbose,
+              redirect_output=global_options.redirect_output,
+              log_file=logfile,
               progress_p=1)
     os.chdir (current)
 
@@ -374,11 +382,12 @@ def process_snippets (cmd, snippets,
                           + list (set ([snip.basename() + '.ly' for snip in snippets])))
     name = os.path.join (lily_output_dir,
                          'snippet-names-%d.ly' % checksum)
+    logfile = name.replace('.ly', '')
     file (name, 'wb').write (contents)
 
     system_in_directory (' '.join ([cmd, ly.mkarg (name)]),
-                         lily_output_dir)
-
+                         lily_output_dir,
+                         logfile)
 
 def snippet_list_checksum (snippets):
     return hash (' '.join([l.basename() for l in snippets]))
index 230b1761d44c1118f69908af2a59bd3823f2ac39..e993378cb873df9d0457b264044d6cbd23872829 100644 (file)
@@ -129,7 +129,7 @@ Options:
 (define (run-browser uri)
   (system
    (if (getenv "BROWSER")
-       (format "~a ~a" (getenv "BROWSER") uri)
+       (format #f "~a ~a" (getenv "BROWSER") uri)
        (format #f "firefox -remote 'OpenURL(~a,new-tab)'" uri))))
 
 
index 76d989f7a0bfdde57a5432aad1f34f1d07949676..2b630029b6223bbb061580201fa54f3874d66c31 100644 (file)
@@ -7,6 +7,7 @@ import os
 import string
 import codecs
 import zipfile
+import tempfile
 import StringIO
 
 """
@@ -67,7 +68,7 @@ additional_definitions = {
     (let* ((ev (event-cause grob))
            (den (if denominator denominator (ly:event-property ev 'denominator)))
            (num (if numerator numerator (ly:event-property ev 'numerator))))
-       (format "~a:~a" den num)))
+       (format #f "~a:~a" den num)))
 """,
 }
 
@@ -1782,11 +1783,11 @@ def musicxml_note_to_lily_main_event (n):
             # TODO: Handle the level-display setting for displaying brackets/parentheses
 
     elif n.get_maybe_exist_typed_child (musicxml.Unpitched):
-       # Unpitched elements have display-step and can also have
-       # display-octave.
-       unpitched = n.get_maybe_exist_typed_child (musicxml.Unpitched)
-       event = musicexp.NoteEvent ()
-       event.pitch = musicxml_unpitched_to_lily (unpitched)
+        # Unpitched elements have display-step and can also have
+        # display-octave.
+        unpitched = n.get_maybe_exist_typed_child (musicxml.Unpitched)
+        event = musicexp.NoteEvent ()
+        event.pitch = musicxml_unpitched_to_lily (unpitched)
 
     elif n.get_maybe_exist_typed_child (musicxml.Rest):
         # rests can have display-octave and display-step, which are
@@ -2489,11 +2490,11 @@ def musicxml_unpitched_to_lily (mxl_unpitched):
     p = None
     step = mxl_unpitched.get_step ()
     if step:
-       p = musicexp.Pitch ()
-       p.step = musicxml_step_to_lily (step)
+        p = musicexp.Pitch ()
+        p.step = musicxml_step_to_lily (step)
     octave = mxl_unpitched.get_octave ()
     if octave and p:
-       p.octave = octave - 4
+        p.octave = octave - 4
     return p
 
 def musicxml_restdisplay_to_lily (mxl_rest):
@@ -2788,7 +2789,17 @@ def read_musicxml (filename, compressed, use_lxml):
     if compressed:
         if filename == "-":
              progress (_ ("Input is compressed, extracting raw MusicXML data from stdin") )
-             z = zipfile.ZipFile (sys.stdin)
+             # unfortunately, zipfile.ZipFile can't read directly from
+             # stdin, so copy everything from stdin to a temp file and read
+             # that. TemporaryFile() will remove the file when it is closed.
+             tmp = tempfile.TemporaryFile()
+             sys.stdin = os.fdopen(sys.stdin.fileno(), 'rb', 0) # Make sys.stdin binary
+             bytes_read = sys.stdin.read (8192)
+             while bytes_read:
+                 for b in bytes_read:
+                     tmp.write(b)
+                 bytes_read = sys.stdin.read (8192)
+             z = zipfile.ZipFile (tmp, "r")
         else:
             progress (_ ("Input file %s is compressed, extracting raw MusicXML data") % filename)
             z = zipfile.ZipFile (filename, "r")
index dcb196c4dc13e4412d1766410e90157895ba818a..fa7dc2e104d4ad47ee60b891dd77ecdf75df8637 100644 (file)
@@ -4,6 +4,9 @@
 all:    default
        $(LOOP)
 
+bin:
+       $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C lily
+
 man:
        $(LOOP)
 
@@ -68,6 +71,7 @@ help: generic-help local-help
        @echo
        @echo "Other generic targets:"
        @echo "  default      same as the empty target"
+       @echo "  bin          check the lily directory and rebuild lilypond.exe if needed"
        @echo "  exe          update all executables"
        @echo "  help         this help"
        @echo "  lib          update all libraries"
index 3a7b158aead63d394491bc66adf6813a6d6dee5e..c1728f9924b1efcf9672a33bae1740960765bc22 100644 (file)
@@ -15,10 +15,14 @@ $(outdir)/%.tfm $(outdir)/%.log: %.mf
 
 # ugh . mf2pt1 is extremely broken, it pollutes CWD iso. creating a
 # temp dir.
+#
+# the soft link for mf2pt1.mp is for recent mpost versions
+# which no longer dump a .mem file
 $(outdir)/%.pfb: %.mf $(outdir)/mf2pt1.mem
        TMP=`mktemp -d $(outdir)/pfbtemp.XXXXXXXXX` \
        && ( cd $$TMP \
                && ln -s ../mf2pt1.mem . \
+               && ln -s ../../mf2pt1.mp . \
                && MFINPUTS=$(abs-src-dir):..:: $(buildscript-dir)/mf2pt1 $(MF2PT1_OPTIONS) $< $(METAFONT_QUIET)) \
        && mv $$TMP/*pfb $(outdir); \
        rm -rf $$TMP
index f9e471a167242e88bde6946cd523f058ed924506..53ff4bce5366bf564117c1387b69f41ae95d82d0 100644 (file)
@@ -60,9 +60,9 @@ $(outdir)/%.info: %.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outd
 
 $(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf $(outdir)/weblinks.itexi
 ifeq ($(WEB_VERSION),yes)
-       cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -D web_version -I $(abs-src-dir) --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
+       cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -D web_version -I $(abs-src-dir) --quiet $(TEXINFO_PAPERSIZE_OPTION) $(<F)
 else
-       cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
+       cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) --quiet $(TEXINFO_PAPERSIZE_OPTION) $(<F)
 endif
 
 $(outdir)/%.txt: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/weblinks.itexi
diff --git a/tex/txi-hu.tex b/tex/txi-hu.tex
new file mode 100644 (file)
index 0000000..7f03a7c
--- /dev/null
@@ -0,0 +1,87 @@
+% Copyright 1999, 2007, 2008 Free Software Foundation, Inc.
+% 
+% This program 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.
+%
+% This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+\txisetlanguage{hungarian}{2}{2}
+
+\plainfrenchspacing
+
+% Don't use checking because if it is our turn they have
+% been defined.
+\gdef\putwordAppendix{függelék}
+\gdef\putwordChapter{fejezet}
+\gdef\putwordfile{fájl}
+\gdef\putwordin{in}
+\gdef\putwordInfo{Info}
+\gdef\putwordMethodon{Metódus itt:}
+\gdef\putwordon{ezen:}
+\gdef\putwordof{ebben:}
+\gdef\putwordpage{oldal}
+\gdef\putwordsection{rész}
+\gdef\putwordSection{rész}
+\gdef\putwordsee{lásd}
+\gdef\putwordSee{Lásd}
+\gdef\putwordShortTOC{Áttekintés}
+\gdef\putwordTOC{Tartalomjegyzék}
+%%
+\gdef\putwordNoTitle{Nincs cím}
+%%
+%% New defintion for the output of months.
+\gdef\putwordMJan{Január}
+\gdef\putwordMFeb{Február}
+\gdef\putwordMMar{Március}
+\gdef\putwordMApr{Április}
+\gdef\putwordMMai{Május}
+\gdef\putwordMJun{Június}
+\gdef\putwordMJul{Július}
+\gdef\putwordMAug{Augusztus}
+\gdef\putwordMSep{Szeptember}
+\gdef\putwordMOct{Október}
+\gdef\putwordMNov{November}
+\gdef\putwordMDec{December}
+\gdef\putwordIndexNonexistent{(Nemlétező index)}
+\gdef\putwordIndexIsEmpty{(Üres index)}
+%%
+%% \defmac
+\gdef\putwordDefmac{Makró}
+%% \defspec
+\gdef\putwordDefspec{Speciális forma}
+%% \defivar
+\gdef\putwordDefivar{Példaváltozó}
+%% \defvar leave unchanged because no difference in
+%%         writing but in phonectics.
+\gdef\putwordDefvar{Változó}
+%% \defopt
+\gdef\putwordDefopt{Felhasználói opció}
+%% \deffun
+\gdef\putwordDeffunc{Függvény}
+
+%%%
+%%% Date stamp
+%%% Produces  y-m-d style of output.
+%%%  4-05-07 == 2007. m\'ajus 4.
+%%%
+\gdef\Today{\number\year. \ifcase\month\or   % Mai d†tum
+  janu\'ar\or febru\'ar\or m\'arcius\or
+  \'aprilis\or m\'ajus\or j\'unius\or
+  j\'ulius\or augusztus\or szeptember\or
+  okt\'ober\or november\or december\fi
+    \space\ifcase\day\or
+    1.\or  2.\or  3.\or  4.\or  5.\or
+    6.\or  7.\or  8.\or  9.\or 10.\or
+   11.\or 12.\or 13.\or 14.\or 15.\or
+   16.\or 17.\or 18.\or 19.\or 20.\or
+   21.\or 22.\or 23.\or 24.\or 25.\or
+   26.\or 27.\or 28.\or 29.\or 30.\or
+   31.\fi}
\ No newline at end of file